【问题标题】:How to query an object from an array using Firestore and Angular如何使用 Firestore 和 Angular 从数组中查询对象
【发布时间】:2020-01-25 22:08:46
【问题描述】:

我正在尝试从 Firestore 查询一个对象,uid,因此我可以将以下对象作为值返回。

我试图制作一个函数来获取对象“香蕉”

getFruit(fruitUid: string, basketUid: string): Promise<any> {
    const basketRef = this.afs.doc(`basket/${basketUid}`).ref;

    return this.afs.firestore.runTransaction((ts) => {
      return ts.get(basketUid).then((sfDoc) => {
        return sfDoc.data().fruits
        .filter(fruit => fruit.uid === fruitUid);
      });
    });
  }

现在我收到以下错误:FirebaseError: Every document read in a transaction must also be written.

这是数据库的样子:

fruits: [
  {
    uid: '123ABC',
    name: 'Banana'
  },
  {
    uid: 'ABC123',
    name: 'Apple'
]
createdAt: 2019-04-20

有没有办法通过指定uid 来获取该特定对象,以便我可以从数组fruits 返回特定fruit

【问题讨论】:

    标签: angular typescript firebase google-cloud-firestore


    【解决方案1】:

    对于单个文档检索,您不需要事务:​​

    getFruit(fruitUid: string, basketUid: string): Promise<any> {
        const basketRef = this.afs.doc(`basket/${basketUid}`);
    
        return basketRef.get().then((sfDoc) => {
          return sfDoc.data().fruits
          .filter(fruit => fruit.uid === fruitUid);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      相关资源
      最近更新 更多