Google云功能永远运行

时间:2019-07-07 01:28:41

标签: node.js google-cloud-functions

大家好,我正在尝试使用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
            });

        });
    });


});

我的功能还可以,但是可以永远运行

1 个答案:

答案 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(,否则该功能可能会在数据库更新之前结束。