1
我有三個數據庫,每個數據庫都有一個MongoDB中名爲'items'的集合,我想從node.js連接到這些集合。在開始連接之前,我獲得一個包含這些數據庫名稱的數組,然後使用async.map()爲每個數據庫創建連接。當執行最後一次回調時,所有連接都打開,但該進程似乎被阻止,不會繼續進行。以下是我的咖啡代碼。NodeJS中的MongoClient.connect阻塞:async.map()
fs = require 'fs'
jf = require 'jsonfile'
MongoClient = (require 'mongodb').MongoClient
async = require 'async'
getConfigFileName =() ->
process.argv[2]
transformed = (err, transformed) ->
console.log transformed
connectMongoDB = (dbEntry, callback) ->
MongoClient.connect "mongodb://localhost:12345/" + dbEntry.databaseName, (err, db) ->
if err
callback err, dbEntry
else
dbEntry.connection = db
callback null, dbEntry
# Start Execution Here.
configFileName = getConfigFileName()
databases = jf.readFileSync configFileName
async.map databases, connectMongoDB, transformed
我相信阻塞發生是由於mongo客戶端,但我不確定該怎麼做來解決這個問題。
你是什麼意思,它是「封鎖」?你在源代碼中調用'async.map()'後調用什麼都沒有被調用? – mscdex
我期望在async.map和所有的回調被執行之後,程序將會退出並顯示上面的代碼。但實際發生的是數組打印到控制檯中的轉換函數,然後不退出(關閉程序我需要做ctrl-c)。如果我不清楚,請告訴我。 – apatrick
這是預料之中的,因爲您現在已經打開網絡連接到您的mongo數據庫。如果你關閉它們,你會發現你的過程會自然退出。 – mscdex