0

Stream を GridFS に格納したいと思います。ただし、期待どおりに動作しません (つまり、コンソール ログがありません)。

var mongo = require("mongodb");

var db = ...

db.open(function (err, db) {
    var stream = ...
    var name = 'foobar';

    var gs = new mongo.GridStore(db, new mongo.ObjectID, name, "w");
    gs.open(function (err, gs) {
        stream.on("data", function (data) {
            gs.write(data, function (err, gs) {
                if (err) {
                    // ...
                }
            });
        });
        stream.on("end", function () {
            gs.close(function (err, gs) {
                if (!err) {
                    console.log(name + " has been stored to database.");
                }
            });
        });
    });
});

なぜそれが機能しないのか誰かが知っていますか?

4

1 に答える 1

1

ストリームをgridfsファイルにパイプするのを忘れたと思います。gridfsファイルはストリームのように動作するため、直接実行できます(db.openコールバック内の最後の行を参照してください)。また、ObjectIDのコンストラクター呼び出しの括弧を忘れており、dbまたはfileを開いたときにエラーがないかチェックしていません。私のコードは構造的に同じように見え、機能します。お役に立てば幸いです...

db.open(function (err, db) {
    var stream = ...
    var name = 'foobar';

    var gs = new mongo.GridStore(db, new mongo.ObjectID(), name, "w");
    gs.open(function (err, gs) {
            if(err) console.log(...)
            else{
        stream.on("data", function (data) {
            gs.write(data, function (err, gs) {
                if (err) {
                    // ...
                }
            });
        });
        stream.on("end", function () {
            gs.close(function (err, gs) {
                if (!err) {
                    console.log(name + " has been stored to database.");
                }
            });
        });
           stream.pipe(gs);
          }
    });
});
于 2013-02-26T19:35:18.350 に答える