Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB(Node.js本机驱动程序)大型gridfs上载失败_Node.js_Mongodb - Fatal编程技术网

MongoDB(Node.js本机驱动程序)大型gridfs上载失败

MongoDB(Node.js本机驱动程序)大型gridfs上载失败,node.js,mongodb,Node.js,Mongodb,当我试图将一个大文件(1.8GB)上传到GridFS时,Mongodb似乎任意提前返回。较小的文件工作正常 我正在使用node.js本机驱动程序。代码(为简洁起见省略了一些内容)如下所示: var objectId = new ObjectID(), gridStore = new GridStore(db, objectId, filename /*declared elsewhere*/, "w", { "content_type": contentType /* declared else

当我试图将一个大文件(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)

问题显然在于Node的流实现的早期版本。10Gen的节点驱动程序团队编写了新版本的驱动程序,以使用较新的节点流实现。因此,节点和本机客户端驱动程序的升级解决了这个问题