我想用firebase函数重写集合中的所有文档



我正在flutter中开发一个应用程序。我想重写";生命;字段中的所有文档;用户";Firestore的集合;10(int)";在东京时间CCD_ 1。无论如何,我还是设法编写了代码,但我对JavaScript和函数一无所知,所以它不起作用。我想知道如何更正它。这是我的代码。

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
process.env.TZ = "Asia/Tokyo";
export const checkTimezone = functions.region('asia-northeast1').https.onRequest(async (req, res) => {
console.info(process.env.TZ)
});
exports.timer = functions.pubsub.schedule('00***').onRun((context) => {
functions.logger.info("timer1 start", {structuredData: true});
admin.firestore().collection("users").get().then(function(querySnapshot){
querySnapshot.forEach(function(doc){
doc.ref.update({
life:10
});
});
})
});

云功能的默认时区为America/Los_Angeles。您可以将时区设置为Asia/Tokyo,这样该功能将在日本的每个午夜运行。此外,您必须从函数返回一个承诺,以便在更新完成后终止它。尝试重构代码,如下所示:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.firestore();
exports.timer = functions.pubsub
.schedule("0 0 * * *")
.timeZone("Asia/Tokyo")
.onRun((context) => {
functions.logger.info("timer1 start", {structuredData: true});
const usersRef = db.collection("users");
return usersRef.get().then((snapshot) => {
const promises = [];
snapshot.forEach((doc, i) => {
promises.push(doc.ref.update({ life: 10 }));
});
return Promise.all(promises);
});
});

最新更新