NodeJS中的MongoClient.connect阻塞:async.map()

时间:2014-05-17 14:11:24

标签: javascript node.js coffeescript node-mongodb-native async.js

我有三个数据库,每个数据库都有一个MongoDB中名为'items'的集合,我想从node.js连接到它。在开始连接之前,我获取了一个包含这些数据库名称的数组,然后使用async.map()为每个数据库创建连接。执行最终回调时,所有连接都已打开,但过程似乎被阻止,不再继续。下面是我的coffeescript代码。

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客户端引起的,但我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

这是预期的,因为您现在已经打开了与mongo数据库的网络连接。如果你关闭它们,你会发现你的过程会自然退出。