保存后Mongoose不会捕获错误:TypeError:无法读取未定义

时间:2018-04-19 09:09:32

标签: node.js mongodb typescript express mongoose

我使用的是Mongoose 4.13.11,我的代码按预期工作,但是当我升级到5.0.15时,当我尝试保存对象时,我开始出现以下错误TypeError: Cannot read property 'catch' of undefined并找到错误。

我已经阅读过这个问题似乎是Save()函数没有返回Promise,我正在使用bluebird并且所有内容都在上一个{{1版本Mongoose

我错过了什么或做错了什么,因为4.13.11应该按照已实施的方式运作。

app.ts

.catch()

Home.ts

mongoose.Promise = bluebird;
mongoose.connect(mongoUrl).then(
  () => { /** ready to use. The `mongoose.connect()` promise resolves to undefined. */ },
).catch(err => {
  console.log("MongoDB connection error. Please make sure MongoDB is running. " + err);
  // process.exit();
});

1 个答案:

答案 0 :(得分:0)

在mongoose中调用save的两种方法

  • 无极
  • 回调

<强>无极

newUser.save().
    then((data) =>{
        console.log("saved data ",data);
        res.json({ message: 'User created!' });
    }).catch(function (error) {
        console.log(error);
        res.json({ message: 'User not created!' });
    });

<强>回调

newUser.save(function(err,data) {
    if (err){
        console.log(error);
        res.json({ message: 'User not created!' });
    }
    else{
        console.log("saved data ",data);
        res.json({ message: 'User created!' });
    }
})

您可以通过设置此

来启用mongoose中的promise
mongoose.Promise = global.Promise;

文档 http://mongoosejs.com/docs/models.html