使用Node和request时,MongoDB GridFS会上传零长度文件

时间:2017-10-23 02:34:55

标签: node.js mongodb gridfs

我正在尝试将文件从URL保存到Mongo GridFS文件。我正在使用request npm模块和官方mongo驱动程序。

这是我的代码:

function retrieveAttachments(NormalizedMessage) {
NormalizedMessage.attachments.forEach(
  function (currentAttachment) {
    var bucket = new GridFSBucket(db);
    var httpRequestStream = require('request');

    httpRequestStream.get(currentAttachment.url)
      .on('error', function (err) {
        console.log(err);
      })
      .pipe(bucket.openUploadStream('dsa'));

  }
);

}

“db”是从MongoClient.connect获得的,而GridFSBucket = require('mongodb')。GridFSBucket;

我遇到的问题是文件是插入mongo的(我可以在fs.files集合中看到它),但它的长度为零。 如果我还在上传流中添加.on('finish')事件,则会调用它。

如果我用fs.createWriteStream('someFile')替换bucket.openUploadStream('dsa'),HTTP请求将保存到本地文件系统中的someFile。

如果我用fs.createReadStream(“test.jpg”)替换httpRequestStream.get(currentAttachment.url),文件test.jpg就会成功上传到GridFS。

0 个答案:

没有答案