Как запросить объект из массива, используя Firestore и Angular - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь запросить объект из Firestore, uid, чтобы я мог вернуть следующий объект в качестве значения.

Я попытался создать функцию, чтобы иметь возможность получить объект 'Banana '

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, чтобы я мог вернуть конкретный fruit из массива fruits?

1 Ответ

0 голосов
/ 25 сентября 2019

Для извлечения одного документа транзакция не требуется:

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);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...