当我尝试将大文件(1.8GB)上传到GridFS时,Mongodb似乎在任意返回。较小的文件工作正常。
我正在使用node.js本机驱动程序。代码(为简洁省略了一些内容)如下:
var objectId = new ObjectID(),
gridStore = new GridStore(db, objectId, filename /*declared elsewhere*/, "w", { "content_type": contentType /* declared elsewhere */ }),
obj = {};
gridStore.open(function (err, gs) {
console.log("gridStore open");
gs.writeFile(tempFile, function (err, doc) {
if (err) {
throw err;
}
console.log("file written");
obj.fileId = doc._id;
// double check the md5 of the uploaded file against what was uploaded
// (md5 variable declared elsewhere)
if (doc.md5 !== md5) {
console.log(doc);
console.log(doc.md5);
console.log(md5);
//delete bad file
GridStore.unlink(db, doc.filename, function (err, gridStore) {
if (err) {
throw err;
}
});
} else {
// do the desired stuff
}
});
});
“doc”对象似乎总是返回不同的长度(显然是不同的md5)。
答案 0 :(得分:0)
问题显然是早期版本的Node的流实现。 10Gen的Node驱动程序团队编写了新版本的驱动程序,以使用更新的Node流实现。因此,Node和本机客户端驱动程序的升级修复了此问题。