Подключите удаленную базу данных на другом сервере с помощью mongoose - PullRequest
0 голосов
/ 19 марта 2020

У меня есть требование, при котором я должен соединить две разные базы данных на разных удаленных серверах с 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" }'
...