Node.js: mon goose .once ('open') не выполняет функцию обратного вызова - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь сохранить несколько json файлов в своей базе данных с помощью написанной мной специальной функции. Для этого я должен подключиться к базе данных, которую я пытаюсь сделать, используя этот фрагмент кода в начале функции:

let url = "mongodb://localhost:27017/database";

(async () => {
    const directory = await fs.promises.readdir(__dirname + '/files')
    let database = await mongoose.createConnection(url, {useNewUrlParser:true, useUnifiedTopology:true});
    database.on('error', error => {
        throw console.log("Couldn't Connect To The Database");
    });
    database.once('open', function() {
        //Saving the data using Schema and save();

Как ни странно, при выполнении database.once('open', function()) функция обратного вызова не работает. t вообще не вызывается, и программа просто пропускает всю часть сохранения и переходит прямо к концу функции.

Я поискал в Интернете решение, и одно решение предложило использовать mongoose.createConnection мгновенное из mongoose.connect. Как видите, проблема не решена, и функция обратного вызова все еще не вызывается.

Как я могу это исправить и почему это происходит?

Спасибо!

1 Ответ

1 голос
/ 29 мая 2020

mongoose.createConnection создает экземпляр подключения и позволяет управлять несколькими подключениями к базе данных, как указано в документации . В вашем случае использования connect() должно быть достаточно (connect создаст одно соединение по умолчанию, которое доступно под mongoose.connection).

Ожидая connect -обещания, вам на самом деле не нужно слушать событие open, вы можете просто выполнить:

...
await mongoose.connect(url, {useNewUrlParser:true, useUnifiedTopology:true});
mongoose.model('YourModel', YourModelSchema);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...