【发布时间】:2019-09-12 03:11:45
【问题描述】:
我在我的应用中记录了用户“喜爱”的最喜欢的优惠。这些记录包括所有者和商品 ID。我想为特定用户收集前 25 个最喜欢的优惠。所有的 firestore 命令都是异步的,我需要在渲染页面之前收集所有的 offer 对象。
这是我第一次使用 async/await,从一开始就迅速成长为嵌套的 async/await。必须有一种更简单的方法来从 fav 对象中收集 ID,然后使用这些 ID 查找 Offer?
async getItems() {
const collectfavs = async () => {
favsRef = firestore.collection('favs').where('owner','==',getUserID()).orderBy('created', 'desc').limit(25);
let allFavsSnapshot = await favsRef.get();
allFavsSnapshot.forEach(doc => {
let data = doc.data();
favsList.push(data.offer);
});
console.log('favs:',favsList);
}
const collectoffers = async () => {
favsList.forEach(async (fav) => {
let doc = await firestore.collection('offers').doc(fav).get()
console.log('doc:', doc);
let data = doc.data();
data.id = doc.id;
offerList.push(data);
});
console.log('offers:', offerList);
}
await collectfavs();
await collectoffers();
}
【问题讨论】:
标签: javascript firebase google-cloud-platform google-cloud-firestore