У меня странная проблема при работе с несколькими подключениями в понедельник goose 4.x.
После следования инструкциям в их документации я создал два подключения для двух базы данных, которые мне нужно использовать (db1.js
и db2.js
).
Когда я пытаюсь получить записи в обеих базах данных, по какой-то причине один из вызовов find()
не возвращает данных. Например, учитывая приведенную ниже базу данных, User1.find({})
должен возвращать 3 записи (что правильно), а User2.find({})
должен возвращать 2 (что не происходит).
Любая идея о том, что может быть проблемой очень ценится!
Дамп базы данных для воспроизведения
use db1;
db.createUser({
user: "admin",
pwd: "admin",
roles: [
{ role: "dbAdmin", db: "db1" },
{ role: "dbAdmin", db: "db2" },
]
});
db.user1.insert({ "name": "Isa1" });
db.user1.insert({ "name": "Joe1" });
db.user1.insert({ "name": "Doe1" });
use db2;
db.createUser({
user: "admin",
pwd: "admin",
roles: [
{ role: "dbAdmin", db: "db1" },
{ role: "dbAdmin", db: "db2" },
]
});
db.user2.insert({ "name": "Isa2" });
db.user2.insert({ "name": "Doe2" });
db1. js
const Mongoose = require("mongoose");
const RSVP = require("rsvp");
Mongoose.Promise = RSVP.Promise;
let options = {
useMongoClient: true,
autoReconnect: true,
keepAlive: 3000000,
connectTimeoutMS: 300000
};
let schema = new Mongoose.Schema({ name: String });
const conn1 = Mongoose.connect('mongodb://admin:admin@localhost/db1', options);
module.exports = conn1.model('User1', schema);
дБ2. js
const Mongoose = require("mongoose");
const RSVP = require("rsvp");
Mongoose.Promise = RSVP.Promise;
let options = {
useMongoClient: true,
autoReconnect: true,
keepAlive: 3000000,
connectTimeoutMS: 300000
};
const conn2 = Mongoose.connect('mongodb://admin:admin@localhost/db2', options);
let schema = new Mongoose.Schema({ name: String });
module.exports = conn2.model('User2', schema);
index. js
const Mongoose = require("mongoose");
const RSVP = require("rsvp");
const User1 = require("./db1");
const User2 = require("./db2");
User1.find({})
.then(res => {
console.log(res.length); //print 3
return User2.find({});
})
.then(res => {
console.log(res.length); //print 0 (should be 2) <----- ERROR
return User1.find({});
})
.then(res => {
console.log(res.length); //print 3
return User2.find({});
})
.then(res => {
console.log(res.length); //print 2
})
.catch(err => {
console.log(err);
});