Mon goose не возвращает записи в .find () при использовании с несколькими подключениями - PullRequest
0 голосов
/ 24 апреля 2020

У меня странная проблема при работе с несколькими подключениями в понедельник 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);
    });

1 Ответ

1 голос
/ 24 апреля 2020

Я полагаю, вам нужно будет использовать Mongoose.createConnection() при создании нескольких соединений вместо Mongoose.connect(), как указано в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...