I asked a question two days ago with a reply "Your method must return a Promise (or an Observable)."
I have altered my code to be exactly the same as the example at "https://firebase.google.com/docs/firestore/manage-data/transactions" but the problem is it passes the result as a console log but I need to wait for the write to complete at I need the result.
  orderIndex() {
    let db = this.firebase.firestore();
    var sfDocRef = db.collection("cities").doc("SF");
    db.runTransaction(function (transaction) {
      return transaction.get(sfDocRef).then(function (sfDoc) {
        if (!sfDoc.exists) {
          throw "Document does not exist!";
        }
        var newPopulation = sfDoc.data().population + 1;
        if (newPopulation <= 1000000) {
          transaction.update(sfDocRef, { population: newPopulation });
          return newPopulation;
        } else {
          return Promise.reject("Sorry! Population is too big.");
        }
      });
    }).then(function (newPopulation) {
      console.log("Population increased to ", newPopulation);
    }).catch(function (err) {
      // This will be an "population is too big" error.
      console.error(err);
    });
  }
I have spent a further two days trying to get a promise returned.
I have seen so many questions asking for help and receiving code suggestions in reply. Please help because I am new to this and have spent over four days on this problem.
By the way the code from firebase.google has an error in
return Promise.reject("Sorry! Population is too big.");
Error: "[ts] Property 'reject' does not exist on type '(resolver: (resolve: (val: IWhenable) => void, reject: (reason: any) => void, notify: (prog...'."
My previous question was at "How do I alter the promises in my function to stop it returning before the data arrives?"
 
     
    