2

假设我有一个名为的集合Countries,一个文档如下所示

{
  name: "Pakistan"
  //other field removed to focus on problem only
}

和文档在国家/地区字段参考之上的集合名称Cities看起来像

{
  name: "Karachi",
  //other field removed to focus on problem only
  city: "3FbRFiWB4DmfdcxDdei3" //reference of country document
}

现在,当用户选择国家/地区时,我将国家和城市显示为有序的下拉菜单,然后下一个下拉菜单显示过滤的城市

let countryRef = this.angularFireStore.collection('Countries', ref => ref);
let countries = countryRef.valueChanges();

和 html 绑定看起来像

let country of country | async"

这是用户的任何更改或选择事件的实际问题我必须将国家/地区的 id 传递给基于所选国家/地区的人口过滤城市,但我无法在国家/地区获得 id。如何实现这一点任何帮助将不胜感激。

注意:我知道我可以通过获取快照更改来获取 id 和其他元数据,但是响应很晚,我只希望引用绑定中的 id 字段用于编辑或更新文档。

4

1 回答 1

2

正如您所说,您不想使用.snapshotChanges()和获取 id,.valueChanges()您需要在创建文档时存储它。在您的添加国家功能中执行此操作

this.tempId = this.angularFireStore.createId();

const newCountry = {
      id:this.tempId,
      name:'Karachi'
      //other fields...
    }

this.angularFireStore.collection('Countries').doc(this.tempId).set(newCountry).then(res => {
  console.log('country added')
}).catch(err => {
  console.log('error adding country',err)
});
于 2018-02-26T11:27:20.100 回答