【发布时间】:2016-09-07 15:44:31
【问题描述】:
我正在使用 Bookshelf.js,一个基于 Promise 的 ORM 模块,来执行几个数据库查找。给定用户提供的键,我需要确定键是否与两个表之一中的记录匹配。如果我在第一个表中找到它,我需要返回该记录。但是,如果我在第一个表中没有找到它,我需要查看第二个表。基本上,我需要有条件地执行一个then 块。我如何使用 Promise 实现这一点?这是我目前拥有的,非常混乱,事实上,我有点不清楚如果我在第一个School 查找中调用resolve 会发生什么——第二个then 块是否也会执行?
exports.findTargetRecord = function(code){
return new Promise(function(resolve, reject){
Schools
.query({ where: { code: code }})
.fetchOne()
.then(school => {
if(school) return resolve(school);
return Organizations
.query({ where: { code: code }})
.fetchOne();
})
.then(org => {
if(org) return resolve(org);
resolve(null);
})
.catch(err => reject(err));
});
};
有没有更简洁的写法?
【问题讨论】:
标签: javascript node.js promise bookshelf.js