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