AngularFire getAll в транзакции, несколько вызовов get - PullRequest
0 голосов
/ 16 января 2019

Я использую AngularFire 5.1.0, и мне нужно выполнить несколько вызовов get в транзакции, например так:

let firstDoc = firestore.doc('col/doc1');
let secondDoc = firestore.doc('col/doc2');
let resultDoc = firestore.doc('col/doc3');

firestore.runTransaction(transaction => {
  return transaction.getAll(firstDoc, secondDoc).then(docs => {
    transaction.set(resultDoc, {
      sum: docs[1].get('count') + docs[2].get('count')
    });
  });
});

https://cloud.google.com/nodejs/docs/reference/firestore/0.13.x/Transaction?authuser=0#getAll

но я не вижу метода getAll, поэтому мне кажется, что я могу сделать несколько записей, но только один вызов get за транзакцию ... любая идея?

1 Ответ

0 голосов
/ 19 января 2019

Вы можете использовать синтаксис async / await , чтобы получить документы внутри транзакции, а затем просто вернуть свою запись.

Должно быть что-то вроде:

const firstDoc = firestore.doc('col/doc1');
const secondDoc = firestore.doc('col/doc2');
const resultDoc = firestore.doc('col/doc3');

firestore.runTransaction(async function(transaction) {
    const first = await firstDoc.get();
    const second = await secondDoc.get();

    return transaction.set(resultDoc, {
        sum: first.get('count') + second.get('count'),
    });
});
...