我已經開始在一個簡單的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