我了解到,用于NodeJS的Mongoose驱动程序会缓存查询,直到连接到MongoDB(没有超时)。但是当数据库崩溃时,应该可以向用户发送消息。因此,让我们来看一下这段NodeJS代码:
Users.find({}, function(err, result) {
// Do something with result and send response to the user
});
这可能会一直挂起。因此,解决此问题的一种方法是执行以下操作。
var timeout = setTimeout(function() {
// whem we hit timeout, respond to the user with appropriate message
}, 10000);
Users.find({}, function(err, result) {
clearTimeout(timeout); // forget about error
// Do something with result and send response to the user
});
问题是:这是否是一种好方法?内存泄漏(对MongoDB挂起的查询)怎么办?
Users.save(...)
时,连接就会挂起。所以现在我想捕获那个数据库连接失败的错误。我可以每次与数据库交互时重新连接(并在回调中做其他事情),但这似乎不太优雅。 - freakish