我可以使用GridFSBucket的openDownloadStream上传文件,并且可以看到文件已上传并在songs.files块下可见。但由于某些原因,在尝试下载时出现以下错误-
Caught exception: Error: FileNotFound: file def1.txt was not found
我的代码是 -
var express = require('express');
var gridModule = express.Router();
var mongoose = require('mongoose');
var fs = require('fs');
gridModule.post('/', (req, res) => {
console.log("::::grid");
//const gridfs = new mongoose.mongo.GridFSBucket(mongoose.connection.db);
//const writeStream = gridfs.openUploadStream('test.dat');
var gridfs = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
chunkSizeBytes: 1024,
bucketName: 'songs'
});
fs.createReadStream('./def.txt').
pipe(gridfs.openUploadStream('def1.txt')).
on('error', function (error) {
assert.ifError(error);
}).
on('finish', function () {
console.log('done!');
process.exit(0);
});
});
gridModule.get('/', (req, res) => {
var gridfs = new mongoose.mongo.GridFSBucket(mongoose.connection.db, {
chunkSizeBytes: 1024,
bucketName: 'songs'
});
/* var bucket = new mongodb.GridFSBucket(db, {
chunkSizeBytes: 1024,
bucketName: 'songs'
}); */
gridfs.openDownloadStream('def1.txt').
pipe(fs.createWriteStream('./def1.txt')).
on('error', function(error) {
console.log(":::error");
assert.ifError(error);
}).
on('finish', function() {
console.log('done!');
process.exit(0);
});
});
module.exports = gridModule;
我也尝试使用ObjectId id,但是出现了同样的错误。有没有人猜测我在这里做错了什么?
注意:代码可能看起来不太优化,比如声明了两次bucket,暂时请忽略它,一旦它工作起来,我会进行更正。
openDownloadStreamByName
吗?因为如果你正在使用文件名,那么应该使用它。 - Aritra ChakrabortyJava
API文档。这是node js的最新v3.1 API文档。 - Aritra ChakrabortyopenDownloadStreamByName
有效,我引用了错误的链接混淆了我。非常感谢。 - eduPeeth