Tôi cũng gặp phải vấn đề này và tôi bắt đầu đào qua mã nguồn mongoose (phiên bản 3.8.14). Cuối cùng nó đã dẫn tôi đến dòng này trong
- mongoose / node_modules / mongodb / lib / mongodb / collection / core.js -> insert (...) -> insertWithWriteCommands (...) ->
-
mongoose / node_modules / mongodb / lib / mongodb / collection / batch / order.js -> Bul.insert (docs [i]) -> addToOperationsList (...) -> bson.calculateObjectSize (tài liệu, sai);
var bsonSize =bson.calculateObjectSize (document, false);
Rõ ràng, điều này gọi BSON.calculateObjectSize, gọi tính toán allowObjectSize sau đó sẽ đệ quy vô hạn. Tôi không thể tìm hiểu sâu về điều gì đã gây ra nó, nhưng nhận thấy rằng nó có thể liên quan đến các chức năng ràng buộc của trình bao bọc mongoose với Lược đồ. Vì tôi đang chèn dữ liệu thô vào mongoDB, khi tôi quyết định thay đổi chèn hàng loạt trong mongoose thành một đối tượng javascript tiêu chuẩn, sự cố đã biến mất và chèn hàng loạt đã xảy ra chính xác. Bạn có thể làm điều gì đó tương tự.
Về cơ bản, mã của tôi đến từ
//EDIT: mongoose.model needs lowercase 'm' for getter method
var myModel = mongoose.model('MyCollection');
var toInsert = myModel();
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});
đến
//EDIT: mongoose.model needs lowercase 'm' for getter method
var myModel = mongoose.model('MyCollection');
var toInsert = { //stuff in here
name: 'john',
date: new Date()
};
var array = [toInsert];
myModel.collection.insert(array, {}, function(err, docs) {});