最近在学习ES6的Promise,书上的例子我都能理解,不过却无法将其应用于实际开发中,有没有人可以以mongodb的异步查询为例,举例说明一下如何应用Promise呢?
示例代码如下:
function getOne(route,callback) {
mongodb.open(function(err,db) {
if (err) {
mongodb.close();
return callback(err);
};
db.collection('posts',function(err,collection) {
if (err) {
mongodb.close();
return callback(err);
};
collection.findOne({
route:route,
},function(err,doc) {
mongodb.close();
if (err) {
return callback(err);
};
if (doc){
callback(null,doc);
} else { //if page not found
callback('404');
}
});
});
});
};
比如这段代码,如何将其改造成Promise形式呢?谢谢!
首先把你的代码抽象拆分成三个不同的函数:
然后,当使用它们时,链式调用,组合一下就是你的结果了:
mongoDB 驱动原生支持返回 Promise
用 mongoose 更加省事