Mar*_*ark 10 mongoose mongodb node.js
我正在经历一些错误情况,试图了解如何处理这些情况.
在没有数据库连接的情况下,Mongoose Model.find(...)调用似乎挂起.下面是示例代码.我会假设使用err对象调用回调,但事实并非如此.
如何防止模型调用挂起?readyState每次访问模型时,是否需要手动检查?
// app.js
// Let's use a non-existing host so connecting fails:
// (callback is invoked with err object)
mongoose.connect('mongodb://localhostXXX/blog', function(err){ ... });
BlogPost = mongoose.model('BlogPost', BlogPostSchema);
// api.js
exports.list_posts = function(req, res) {
// Ready state is '0' = disconnected (since we used a wrong hostname)
console.log('DB ready state: ' + BlogPost.db.readyState);
// This will not invoke the callback:
BlogPost.find(function(err, threads) {
// Never called...
});
}
Run Code Online (Sandbox Code Playgroud)
这不是答案,但希望它能帮助您找到解决方案. 使用护照模块时与mongoose.createConnection有非常相似的问题 ,发现mongoose.connect工作正常
由于您已经在连接调用中使用了错误处理程序,因此明智的做法是在数据库未启动时退出您的应用程序,或者激活一些以漂亮的500 Internal Server Error.
Mongoosenode-mongodb-native在底层使用 mongodb 连接,您可能会在其中找到其他有用的连接选项。:)
编辑:尝试设置socketOptions.socketTimeoutMS. 显然没有设置默认超时。请参阅http://mongodb.github.com/node-mongodb-native/api- generated/server.html 。
我的工作机器上没有节点来为您尝试确切的语法,但您可能必须使用mongoose.Connection,它有一个open()接受选项传递到 的方法node-mongodb-native。我不认为mongoose.connect()接受这些选择,但我可能是错的。
| 归档时间: |
|
| 查看次数: |
4179 次 |
| 最近记录: |