在创建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的数量)
答案 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)
}
}
希望它会对您有所帮助。