关于mongoose中的promise问题。。。。。。
发布于 8 年前 作者 guirenpei 3656 次浏览 来自 问答

先来两张图吧。 clipboard.png 4.png 1.就上面第一张图来说,其中报出了一个mongoose的错误,我查了一下是和promise有关的,然而我还是将我的数据存进了我的数据库里面,这个报错有没有要紧呢,or,我压根就不用管。 2.就是第二张图中的代码问题。我在使用mongoose 的save方法的时候在最后面加了.exec()也就是 yield _ip.save((err, ip) => { if(err){ console.log(err); } console.log(‘ip’); console.log(ip); }).exec(); 这个save方法后面可不可以带.exec()呢?我查了下百度,好像说是出了save其他的可以。可我涌出来也没有报错。。会不会有问题呢。 大神啊 ,Org~

5 回复

第一个是Mongoose内置的那个mpromise不推荐了让你自己换用其他的,其实那个一直不好用,Mongoose 5.0之后也将用native替代 mongoose.Promise = require('bluebird'); 这样替换掉即可

第二个的话按标准定义其实Mongoose如果基于Model操作大部分方法不传入回调函数的话默认的Return就是一个Promise,有些Return是Query对象的话,不传入回调函数就需要exec()才能Return一个Promise,具体可以看官方的API Doc

@scarletmu 谢谢啦,谢谢啦

@guirenpei 在前面加入 mongoose.Promise = global.Promise 的系统默认方式即可; 没有必要去装个bluebird 的,用系统默认的方式就可以。

在连接数据库的时候就加上 mongoose.Promise = global.Promise

回到顶部