我想在 nodejs 应用程序中使用 gridfs-stream。
文档中给出了一个简单的示例:
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!
})
评论描述了我的问题:
在传入之前确保数据库实例是打开的
Grid
我尝试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});
}));
})
从回调初始化我的路由似乎有点奇怪。我在这篇文章(Node.js 模块的异步初始化)中读到 require('') 是同步执行的,因为我依赖于建立的连接,所以我有点被迫等待
基本上我不确定我现在是否应该在启动时使用异步模式,或者我只是想念一种更优雅的方式来解决这个问题。