我想学习如何使用蓝鸟承诺,我有点失落。通过函数返回承诺异步映射集合
我有两个数据库表:topic
和subject
。
该topic
表有一个subject_id
列,然后可以使用该列查询主题标题的subject
表。
我有一个orm
异步查询并返回一个承诺。
最后我想写的主题,也确实查找对你来说,注射subject_title
从随后subject
查询到最初从topic
查询返回的对象的数组中的每个元素返回模型的方法。我试图使用Promise.map
,但这是行不通的。下面的代码不起作用。我从来没有想到它,但我认为它捕捉了我想要完成的本质。
var promise = orm.select({
db: db,
table: 'topic',
where: args.where,
order: args.order,
limit: args.limit,
offset: args.offset,
group: args.group
}).map(function (topic) {
var promise = orm.select({
db: db,
table: 'subject',
qrm: 'one',
where: {id: topic.subject_id}
}).then(function (subject) {
topic.subject_title = subject;
});
return promise;
});
return promise;
因此,假设一个香草topic
对象具有的属性:
[subject_id, title, description]
而一个subject
对象具有:
[id, title]
我想上述函数返回对象的数组具有以下属性:
[subject_id, subject_title, title, description]
完成此操作最简洁的方法是什么?
为什么不避免突变,并返回一个新的对象与你的新属性? – elclanrs
'orm.select()'返回什么?它是否恢复了蓝鸟的承诺?而且,实现的数据是什么? – jfriend00
@ jfriend00它返回一个蓝鸟的承诺。 fufilled数据是一组对象。数组中的每个对象表示'topics'表中的一行。 – LukeP