mongoose下的promise技巧
目录
在Promise大行其道的世界里,使用promise可谓是家常便饭了,写一个漂亮的promise极其重要
本文将会基于Express环境实战mongoose的promise,帮大家避免一些常见的错误并对promise链进行调整以提高其可读性
最后,本文将会介绍一种极少见的promise奇淫怪技,解决一些难以解决的又不得不解决的异步冲突
前期准备
虽然mongoose
本身也有自带promise
且大部分操作返回就是一个promise
对象,但大多数情况下我们还是毅然决然的换成bluebird
这个promise库,其中提供了大量的
promise操作可供我们使用,废话少说,赶紧上路!
Bad example
你可能看过这样的Promise
链中链
user_group.findByName('admin')
.then(function(doc) {
user.findUser(id)
.then(function(userObj) {
....
})
.catch(function(err) {
next(err);
});
})
.catch(function(err) {
next(err);
});
看到这里不用写都应该能发现,这Promise
已经失去了它原本的使命,层层嵌套,犹如又回到了地狱回调的节奏,可读性不免让人觉得糟糕
Let’s pratice
我们可以来动手改写一下