首页 > 解决方案 > db.close() 导致“UnhandledPromiseRejectionWarning”

问题描述

我正在尝试运行一个函数以插入猫鼬数据库,然后关闭连接。我的代码如下:

var db = mongoose.connection;

db.on('error', function (err) {
  console.log('mongoose connection error: ', err);
});

db.once('open', function () {
  console.log('mongoose connected successfully');
})
  .then(() => { return seedMongo() })
  .then(() => {
    console.log('finished seeding database')
    db.close()
  })
  .catch((err) => console.log('error with seeding mongo database: ', err))

当我运行它时,它给了我以下错误:

(node:14130) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 70)

当我不使用 db.close() 时,它会运行该函数和所有函数,但不会关闭连接,所以我知道该函数有效。

标签: node.jsmongodbmongoose

解决方案


connection.close()返回Promise.catch您应该使用或使用async函数来处理它。

或者简单地添加return,以便可以在现有链中捕获。


推荐阅读