node.js - 谷歌云功能永远运行
问题描述
大家好,我正在尝试使用 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
});
});
});
});
我的功能没问题,但永远运行
解决方案
该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(
,否则该函数可能会在数据库更新之前结束。
推荐阅读
- php - 何从动态表中获取数据
- angular - 当服务需要导入另一个服务时如何避免“循环依赖”错误
- python - 在 pandas 中读取具有非 ascii 字符集的 CSV,然后存储在 PGSQL 中
- homebrew - 自制软件在 MacOS Big Sur 上失败
- typescript - 在 Typescript 中将非 null 值与 null 进行比较时是否可能会收到警告?
- r - ggplot:用图中的点数更新构面标签
- maven - 列出maven中所有缺少的依赖项
- azure - 如何将保留历史记录(时间戳和版本)的 Databricks 表复制到新订阅中的另一个 Databricks?
- swift - 如何在Firebase / Swift中更新字段等于的文档字段
- powershell - PowerShell:Visual Studio Code - 不反映模块中的更改