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.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 回答