先来两张图吧。
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~
第一个是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