【发布时间】:2017-05-14 21:14:05
【问题描述】:
我有一个“新旅行”表单,用户可以在其中写下参与者的姓名,然后提交表单以创建旅行。
提交时,我使用名称查询 Firebase 数据库,以获取参与者 (/users) 的 ID。然后,我将 ID 添加到行程对象的 participantsID 字段,然后将新行程推送到 Firebase。
问题是 Firebase 查询是异步的并返回一个 Observable,因此我的函数将在 Observable 完成之前继续推送对象,因此新对象的参与者ID 字段为空。
是否有任何方法可以等待 observable 完成(以一种同步方式)以便我可以操作数据然后继续?到目前为止,我所有解决此问题的尝试都失败了。
这是我的简单代码。
getUserByAttribute(attribute, value) {
return this.db.list('/users', {
query: {
orderByChild: attribute,
equalTo: value,
limitToFirst: 1
}
});
}
createTrip(trip) {
for(let name in participantsName.split(',')) {
getUserByAttribute('username', name)
.subscribe( user => trip.participantsID.push(user[0].$key) );
}
this.db.list('/trips').push(trip);
}
【问题讨论】:
标签: javascript angular firebase observable angularfire2