我已经开始在一个简单的node.js应用程序中使用Q Promise包。所以我对如何在所有承诺序列完成后关闭数据库连接感兴趣。Node.js:在MongoDb中使用Promise
例子:
var toDbConnectionString = function(dbSettings) {
return "mongodb://" +
dbSettings.user + ":" +
dbSettings.password + "@" +
dbSettings.url;
};
var connectionString = toDbConnectionString(dbSettings);
Q.nfcall(
MongoClient.connect,
toDbConnectionString(dbSettings))
.then(function(db) {
return Q.ninvoke(db, "collectionNames");
})
.then(function(collections) {
console.log(collections);
})
.catch(function() {
console.log(arguments);
});
我想关闭显示集合名称后的连接,但有一个在这个匿名函数没有分贝范围内。
有没有办法如何处理承诺模式这种情况?
为什么不抓住db'的'的价值,用它最后一步? – WiredPrairie
我可以使用这个解决方案,但也许有一个更优雅的方式。 – shadeglare
由于您通常应该只有一个连接到每个节点实例的数据库,所以肯定会有预期的结果。此外,您必须考虑通常您需要在代码中的其他地方使用它,因此它需要可访问。例如,如果您想稍后统计每个集合的文档数量(使用他们的集合名称),该怎么办? – WiredPrairie