猫鼬-使用两个不同的uri

时间:2018-07-12 03:00:32

标签: node.js asynchronous mongoose

在创建Mongoose连接时,我遇到了异步任务的问题。我将在阵列中存储一个 n number of connections ,我想将每个创建的connection object推送到单个object中。

在我的代码中,只有最后一个connection被推送到object

我的代码:

    async function createMongooseConnctions(mongoUrl, opts){
       var mongooseConnections = {};
       for(const value of mongoUrl){
          var conn = await mongoose.connection.openUri(value, opts)
          let host = conn.host
          mongooseConnections[host] = conn
       }
    }

我也很难将其推到对象上,因为我似乎无法复制用于制作动态键的code。 如果我做过的事情还有其他方法,那么更有效的做法也很不错。

编辑

创建后我记录了conn对象,它创建了n个不同的连接对象,但是当我试图将它们推入JSON对象时,最后一个连接是唯一被推入的( n次取决于uri的数量)

2 个答案:

答案 0 :(得分:0)

包含mongoUrl的内容是什么?

您确定conn.host对于每个连接都不同吗?否则,它将在相同的对象键中设置该值

===================================

mongoose.connection.openUri可能不会每次都创建另一个连接。我认为它必须使用相同的连接对象。

尝试通过创建一个真正的新mongo连接:

mongoose.createConnection()

它将为每个连接返回一个新的连接对象

答案 1 :(得分:0)

您应该尝试以下操作:

async function createMongooseConnctions(mongoUrl, opts){
       var mongooseConnections = {};

       for(const value of mongoUrl){
          (function(){
               var conn = await mongoose.connection.openUri(value, opts)
               let host = conn.host
               mongooseConnections[host] = conn
         })(value)
       }
    }

希望它会对您有所帮助。