在此先感谢你们给我的任何帮助。我正在尝试使用mongodb,mongoose,gridfs-strea,并表示将img文件存储在mongodb上。我不想将文件存储在文件夹中。我希望gfs.createWriteStream直接从express的app.post获取文件。App.post当前正在通过模式模型将一些字符串保存到mongodb中。路由到app.post的表单包含字符串和img文件的输入。
我试图做到这一点(dnimgfront是输入的名称):
dnimgfront:req.pipe(gfs.createWriteStream('req.body.dnimgfront'))
我回来了
TypeError: Object function Grid(db, mongo) {
if (!(this instanceof Grid)) {
return new Grid(db, mongo);
}
mongo || (mongo = Grid.mongo ? Grid.mongo : undefined);
我的问题是我必须能够存储来自同一app.post保存功能的img和字符串。有任何想法吗?
我用来连接到mongodb的是:
mongoose.connect('mongodb://localhost/veeltaxi');
var con=mongoose.connection;
con.once('open', function(){
console.log('connected to mongodb succesfully!')
});
在此先感谢您的帮助。
首先,您需要一个而不是gridfs-stream:
var GridStream = require('gridfs-stream');
var mongodb = require('mongodb');
var gfs = new GridStream(mongoose.connection,mongodb);
在这一点上,您可以创建写入流和管道:
var writeStream = gfs.createWriteStream({
filename: filename, // the name of the file
content_type: mimetype, // somehow get mimetype from request,
mode: 'w' // ovewrite
});
req.pipe(writeStream);
但是,目前,Node.js MongoDB驱动程序的版本为2.0,该版本使用Streams 2,因此,gridfs-stream
如果您使用的是该版本的mongodb
lib ,则没有理由使用。请参阅v2.0.13的源代码。仅供参考,在更新的驱动程序中实现的流是Duplex。(此外:gridfs-stream存在很多问题,并且虽然得到了积极维护,但并不是很常见。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句