0

そして、皆さんが私に与えることができるどんな助けにも前もって感謝します. mongodb、mongoose、gridfs-strea、および express を使用して、img ファイルを mongodb に保存しようとしています。ファイルをフォルダに保存したくありません。gfs.createWriteStream に、app.post から Express から直接ファイルを取得してもらいたいです。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!')
});

よろしくお願いします。

4

1 に答える 1

0

まず、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 ドライバーは Streams 2 を使用するバージョン 2.0 であるため、gridfs-streamそのバージョンのmongodblib を使用している場合に使用する理由はありません。v2.0.13 のソース コードを参照してください。参考までに、更新されたドライバーに実装されているストリームは Duplex です。(余談: gridfs-stream には問題があり、積極的にメンテナンスされていますが、それほど頻繁ではありません。)

于 2015-01-13T19:54:58.877 に答える