Node.js Mongoose-使用两个不同的uri
我在创建Mongoose连接时遇到了异步任务问题。我将在一个数组中存储Node.js Mongoose-使用两个不同的uri,node.js,asynchronous,mongoose,Node.js,Asynchronous,Mongoose,我在创建Mongoose连接时遇到了异步任务问题。我将在一个数组中存储n个连接,我希望将创建的每个连接对象推送到一个对象 在我的代码中,只有最后一个连接正在推送到对象 我的代码: async function createMongooseConnctions(mongoUrl, opts){ var mongooseConnections = {}; for(const value of mongoUrl){ var conn = awai
n个连接
,我希望将创建的每个连接对象
推送到一个对象
在我的代码中,只有最后一个连接
正在推送到对象
我的代码:
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
}
}
我也很难把它推到我的对象上,因为我似乎无法复制用来制作动态键的。
如果我一直在做的事情中还有其他更有效的方法的话,那也太好了
编辑:
创建后我记录了conn对象,它创建了n个不同的连接对象,但是当我试图将它们推送到我的JSON对象时,最后一个连接是唯一一个推送的连接(n次,取决于uri的数量)什么包含mongoUrl 您确定每个连接的conn.host都不同吗?否则,它将在相同的对象关键帧中设置值 ==================================== openUri可能不会每次都创建另一个连接。我认为它必须使用相同的连接对象 尝试使用以下各项创建真正的新mongo连接: mongoose.createConnection() 它将为每个连接返回一个新的连接对象您应该尝试以下操作:
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)
}
}
希望它能对您有所帮助。这是一个MongoDB uri数组,是的,我在创建conn对象后记录了它,它创建了两个不同的connections对象,但当我试图将它们推送到我的JSON对象时,最后一个连接是唯一一个推送的连接(n次,取决于uri的数量),请参见编辑,您必须为每个想要的连接调用createConnection而不是openUri,但这将返回一个错误Db.prototype.authenticate方法将在下一个主要版本3.x中不再可用,因为MongoDB 3.6将只允许对admin Db中的用户进行身份验证,并且不再允许在套接字上使用多个凭据。请使用MongoClient.connect进行身份验证,并使用身份验证凭据:var mongoose=require(“mongoose”);var dbA=newmongoose.mongoose();var dbB=newmongoose.mongoose();var connA=dbA.connect(“mongodb://localhost:27017/a"); var connB=dbB.connect(“mongodb://localhost:27018/b");如果它不起作用,则更改=>让conn=等待mongoose.connection.openUri(值,opts);//var=>let