在mongoose中,promise的疑惑
mongoose自己带的promise不能捕获发生的错误,求指点
var promise =await myModel.findById(info).exec()
.then(function (doc) {
console.log(doc)
})
.catch(function (err) {
console.log(err.toString())
})
传的info不合规则的时候不能捕获到错误
不使用自带的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())
})
5 回复
Mongoose 自带的 Promise 不提供 catch。 StackOverflow 貌似是因为 catch 不属于 Promises/A+ 规范。GitHub Issue 而且 Mogoose 自带的 Promise 已经弃用了。LZ的第二种写法也不是 Mogoose 官方推荐的,最好用
mongoose.Promise = global.Promise;
// or
mongoose.Promise = require('bluebird');
这种方法定义自己的 Promise。官方文档
@ianchn 多谢多谢
一楼正解,不想引用太多的包的话,就 mongoose.Promise = global.Pormise;
@zhang962976642 正在尝试 ,多谢指点
mongodb 不是没有自带promise了么,,,
router.get('/list',async (ctx,next) => {
ctx.body = await Login.find({})
})