2012-12-07 43 views
0

我想在GridFS中存儲數據流。但它不能按預期工作(即沒有控制檯日誌)。使用Node.js在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."); 
       } 
      }); 
     }); 
    }); 
}); 

有誰知道爲什麼它不起作用?

回答

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); 
      } 
    }); 
}); 
相關問題