所以我有2个收藏
1个集合为“用户”。我有具有属性“配置文件”的文档(对象),其中包含字符串。它是配置文件的ID,作为文档存储在其他集合“角色”中。
所以我正在尝试获取此数据,但没有成功。是否存在连接方法或类似方法?还是我必须使用promise从集合角色获取数据,然后将其分配给代理?
async componentDidMount() {
firebase
.firestore()
.collection('users')
.orderBy('lastName')
.onSnapshot(async snapshot => {
let changes = snapshot.docChanges()
const agents = this.state.agents
for (const change of changes) {
if (change.type === 'added') {
const agent = {
id: change.doc.id,
...change.doc.data()
}
await firebase
.firestore()
.collection('roles')
.doc(change.doc.data().profile).get().then( response => {
//when i get response i want to set for my object from above this val
agent['profile'] = response.data().profile
//after that i want to push my 'agent' object to array of 'agents'
agents.push(agent)
console.log(agent)
}
)
}
}
this.setState({
isLoading: false,
agents: agents
})
})
}
答案 0 :(得分:0)
要对对象数组执行异步操作,您可以使用promise.all,我在下面给出了一个示例,该示例类似于您必须进行多次异步操作的用例
const all_past_deals = await Promise.all(past_deals.map(async (item, index) => {
const user = await Users.get_user_info(item.uid);
const dealDetails = await Deals.get_deal_by_ids(user.accepted_requests || []);
const test = await Users.get_user_info(dealDetails[0].uid);
return test
}))
}
这样,您可以从一次api调用中获取数据,并使用获取的数据进行其他api调用