CNode

在mongoose中,promise的疑惑

问答
FFantasyGao发布于9 年前最后回复9 年前4 回复5907 浏览0 收藏

mongoose自己带的promise不能捕获发生的错误,求指点

 var promise =await myModel.findById(info).exec()
     .then(function (doc) {
        console.log(doc)
    })
    .catch(function (err) {
        console.log(err.toString())
    })
传的info不合规则的时候不能捕获到错误

自带promise

不使用自带的promise,可以再catch里捕获到

    var promise =new Promise(function(resolve, reject) {
         myModel.findById(info)
         resolve(1)
    })
    .then(function (doc) {
        console.log(doc)
    })
    .catch(function (err) {
        console.log(err.toString())
    })

不使用自带promise

查看回复

回复 (4)

I
ianchn#1·9 年前

Mongoose 自带的 Promise 不提供 catch。 StackOverflow 貌似是因为 catch 不属于 Promises/A+ 规范。GitHub Issue 而且 Mogoose 自带的 Promise 已经弃用了。LZ的第二种写法也不是 Mogoose 官方推荐的,最好用

mongoose.Promise = global.Promise;
// or
mongoose.Promise = require('bluebird');

这种方法定义自己的 Promise。官方文档

Z
zhang962976642#3·9 年前

一楼正解,不想引用太多的包的话,就 mongoose.Promise = global.Pormise;

参与回复
登录后即可参与回复。登录