大家好,我正在尝试使用Google Cloud Scheduler触发云功能,但是当我运行作业时,它将永远运行。
我有一个包含用户数据的实时数据库,他们有2个布尔值,当我运行云函数时,此布尔值更改为false没关系,但是当我再次更改为true时,功能永远不会停止,立即更改为false,我不知道为什么。这是我的cron配置0 1 * * *这是我的代码:
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
var db = admin.database();
exports.DailyResets = functions.https.onRequest((req, res) => {
var usersRef = db.ref("users");
return usersRef.orderByValue().on("value", function (snapshot) {
snapshot.forEach(function (data) {
console.log("Usuario: " + data.val().nombre + " Cupon" + data.val().Cupon);
var hopperRef = usersRef.child(data.key.toString());
hopperRef.update({
"Cupon": false,
"DailyGift": false
});
});
});
});
我的功能还可以,但是可以永远运行
答案 0 :(得分:2)
on()
方法不会返回承诺。您可能正在寻找once()
:
exports.DailyResets = functions.https.onRequest((req, res) => {
var usersRef = db.ref("users");
return usersRef.orderByValue().once("value", function (snapshot) {
snapshot.forEach(function (data) {
console.log("Usuario: " + data.val().nombre + " Cupon" + data.val().Cupon);
var hopperRef = usersRef.child(data.key.toString());
return hopperRef.update({
"Cupon": false,
"DailyGift": false
});
});
});
});
您会注意到我在对return
的调用中还添加了hopperRef.update(
,否则该功能可能会在数据库更新之前结束。