简体   繁体   中英

NodeJs function not working as expected in Firebase Cloud functions

I do have not any familiarity with node/Js but I have 9 functions that I need to use in Firebase cloud functions, I made a scheduled function on a firebase in nodejs but it's not working as expected.

Just for clarification that the document that I want to update is in this hierarchy in firestore:

users (collection) -> abcUser (document) -> others (collection) -> limiter (document)

Below is one of the functions which is running succefuly on google cloud but the document is not getting update/change:

exports.resetLimiter = functions.pubsub
.schedule("*/5 * * * *")
.onRun( async (context) => {
  const snapshot = await db.collection("users").get();
  for (let i = 0; i < snapshot.docs.length; i++) {
    await snapshot[i].query.get.collection("others").doc("limiter")
        .update({
          weeklyFlow: 0.0,
          monthlyFlow: 0.0,
        });
  }
});

Peace!

update() returns a promise, but you're ignoring them. This causes the function to complete without waiting for the updates to complete. You need to await each one before returning.

Also your function seems to be incorrect in the way it uses the Firestore API. There is no property get on DocumentSnapshot objects. I'll try to rewrite it anyway with await .

      for (var i = 0; i < snapshot.docs.length; i++) {
        await db.collection("others").doc("limiter")
            .update({
              weeklyFlow: 0.0,
              monthlyFlow: 0.0,
            });
      });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM