我想學習如何使用藍鳥承諾,我有點失落。通過函數返回承諾異步映射集合
我有兩個數據庫表: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