nodejs — mongoose не выдает ошибку со сломанным Uri

#javascript #node.js #mongoose

#javascript #node.js #mongoose

Вопрос:

В моем файле index.ts есть следующий код:

 import mongoose from 'mongoose'

const DBUri = "blah";

const connectDatabase = (): void => {
    try {
        mongoose.connect(DBUri, {useNewUrlParser: true}, () => {
            console.log('mongoose connected.')
        })
    } catch (e) {
        console.log(e);
        throw e
    }
};

connectDatabase()
 

Когда я компилирую в js и выполняю файл, я mongoose connected регистрируюсь в консоли. Но я бы ожидал, что будет выдана ошибка (поскольку DBUri она сломана).

Что я делаю не так?

Ответ №1:

Вы обнаружите ошибку или отключение из-за этих событий

 try {
      mongoose.connect(DBUri, {useNewUrlParser: true}, () => {
          console.log('mongoose connected.')
      })

       mongoose.connection.on('disconnected', () => { console.log("Disconnect")  });

       mongoose.connection.on('error', (error) => {
       console.error('[error]: ', error);
      });
    } catch (e) {
    console.log(e);
    throw e
   }
 

Ответ №2:

Вы должны фиксировать error аргумент в своем обратном вызове в соответствии с документацией Mongoose:

 mongoose.connect(DBUri, {useNewUrlParser: true}, (err) => {
  if(err) return console.log('mongoose failed to connect.')
  console.log('mongoose connected.')
});
 

Кроме того, try..catch это излишне, поскольку вы уже передаете обработку ошибок Mongoose через этот обратный вызов.

https://mongoosejs.com/docs/connections.html#callback