【发布时间】:2016-10-18 04:25:54
【问题描述】:
面对 Mongoose 承诺的问题
MyModel.find().then((data)=> Promise.reject())
.catch(()=>console.log('first catch'))
.then(()=>console.log('ok'))
.catch(()=>console.log('second catch'));
执行后我得到
first catch
second catch
但如果我只用原生 Promises 来做:
Promise.reject()
.catch(()=>console.log('first catch'))
.then(()=>console.log('ok'))
.catch(()=>console.log('second catch'));
执行后我得到
first catch
ok
就 Promise docs 而言没问题
好像Mongoose用的是自己的promise implementation
我发现我可以通过以下方式解决这个问题
new Promise((resolve, reject) => { MyModel.find().then((data) => reject()) })
.catch(()=>console.log('first catch'))
.then(()=>console.log('ok')
.catch(()=>console.log('second catch'));
根据文档,它可以正常工作:
first catch
ok
有什么建议可以更好地使用它吗?
【问题讨论】:
标签: javascript node.js mongodb mongoose promise