0
我想在nodejs應用程序中使用gridfs-stream。db連接初始化 - nodejs
一個簡單的例子是在documentation給出:
之前,請確保數據庫實例是開放的:突入
Grid
var mongoose = require('mongoose');
var Grid = require('gridfs-stream');
Grid.mongo = mongoose.mongo;
mongoose.connect('mongodb://localhost:27017/test');
// make sure the db instance is open before passing into `Grid`
mongoose.connection.once('open', function() {
var gfs = Grid(mongoose.connection);
// all set!
})
我的問題是由註釋說明
我嘗試在帖子請求中使用gfs
。現在,當代碼初始化時,gfs
變量尚未定義。
api.post('/upload', function(req, res) {
req.pipe(gfs.createWriteStream({
filename: 'test'
}).on('close', function(savedFile){
console.log('file saved', savedFile);
return res.json({file: savedFile});
}));
})
從回調初始化我的路由似乎有點奇怪。我寫在這篇文章(Asynchronous initialization of Node.js module),要求('')是同步執行的,因爲我依靠建立的連接,我有點迫不及待
基本上我不知道如果我應該現在在啓動時使用異步模式,或者如果我只想念一個更優雅的方式來解決這個問題。
應用所有東西並創建應用程序很常見,然後**開始監聽傳入的請求。因此,當你第一次請求時,數據庫將被連接。沒有什麼不好,等待它並執行回調。使用'EventEmitter'更好,只是發出一個事件 - 它很容易,靈活並且解耦。 –
好吧,所以我去那:)謝謝你的快速回復 – Stefan