Облачная функция Google работает вечно - PullRequest
0 голосов
/ 07 июля 2019

Привет всем, я пытаюсь запустить облачную функцию с помощью 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 Ответ

2 голосов
/ 07 июля 2019

Метод 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(, так как в противном случае функция может завершиться до обновления базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...