我正在尝试将文件从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。