async function transactionWithResult()

in firestore/main/index.js [398:419]


async function transactionWithResult(db) {
  // [START firestore_transaction_document_update_conditional]
  const cityRef = db.collection('cities').doc('SF');
  try {
    const res = await db.runTransaction(async t => {
      const doc = await t.get(cityRef);
      const newPopulation = doc.data().population + 1;
      if (newPopulation <= 1000000) {
        await t.update(cityRef, { population: newPopulation });
        return `Population increased to ${newPopulation}`;
      } else {
        throw 'Sorry! Population is too big.';
      }
    });
    console.log('Transaction success', res);
  } catch (e) {
    console.log('Transaction failure:', e);
  }
  // [END firestore_transaction_document_update_conditional]

  return transaction;
}