У меня есть требование, при котором я должен соединить две разные базы данных на разных удаленных серверах с mon goose с моего основного сервера. Теперь я провел небольшое исследование и обнаружил, что мы можем связать несколько экземпляров с mon goose, а затем использовать useDb()
для использования базы данных Speci c. Все работает нормально, когда я подключаю его к 2 локальным базам данных, но когда база данных удалена, и я подключаю ее по IP, это дает ошибку аутентификации. Я думаю, что соединения становятся смешанными. Ниже мой код, который я использую, который работает с локальной базой данных:
mongoose.connect('mongodb://'+db.host+':'+db.port+'/'+db.dbname,{user: db.username, pass: db.password, useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, useFindAndModify:false })
.then(() => {
console.log(`db connection successful`);
mongoose.connect('mongodb://'+db2.host+':'+db2.port+'/'+db2.dbname,{user: db2.username, pass: db2.password, useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true, useFindAndModify:false })
.then(() => console.log(`db connection2 successful`))
.catch((err) => logger.error("db connection2 error", err));
}).catch((err) => logger.error("db connection1 error", err));
Когда host is localhost, все работает нормально, но когда я меняю его с IP-адресом сервера, он выдает authentication error
.
'not authorized on db to execute command { find: "collection_name", filter: { basicDetails.applicationNumber: "5000" }, projection: {}, returnKey: false, showRecordId: false, lsid: { id: UUID("164bf515-cec6-470f-fewcfrv") }, $clusterTime: { clusterTime: Timestamp(158461230, 1), signature: { hash: BinData(0, 6210C6E1586CFDBDC), keyId: 12346890 } }, $db: "DB" }'