我想将一个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.");
}
});
});
});
});
有谁知道为什么它不起作用?
答案 0 :(得分: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);
}
});
});