我想每天上午12:00重置Firebase实时数据库中的特定值。为此,我使用Firebase Admin SDK更改Firebase实时数据库和云函数中的数据,以便每天上午12:00触发更改。
这是我的Firebase实时数据库的示例结构:
{
"users": {
"fa54487d9cbb4214b00db80e2118e4e6": {
"daily": 10
}
}
}
这是我的index.js
中的代码:
// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
var functions = require('firebase-functions');
// The Firebase Admin SDK to access Cloud Firestore.
var admin = require('firebase-admin');
// Fetch the service account key JSON file contents
var serviceAccount = require("serviceAccountKey.json");
// Initialize the app with a service account, granting admin privileges
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://databaseName.firebaseio.com"
});
// As an admin, the app has access to read and write all data, regardless of Security Rules
var db = admin.database();
var ref = db.ref("users");
// Reset today GHG emissions at 12:00 AM everyday
exports.dailyReset = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
usersRef.child("{userId}").set({
daily: 0
});
});
部署错误:
! 函数[DailReset(us-central1)]:部署错误。
加载用户代码时函数失败。这可能是由于用户代码中的错误造成的。错误消息:错误:请检查函数日志以查看错误原因:https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs.有关其他故障排除文档,请访问https://cloud.google.com/functions/docs/troubleshooting#logging.请访问https://cloud.google.com/functions/docs/troubleshooting以获取深入的故障排除文档。
Firebase控制台功能日志:
错误:函数终止。建议的操作:检查日志以了解终止原因。
可以在https://cloud.google.com/functions/docs/troubleshooting#logging找到其他故障排除留档功能无法初始化。
{@type:“type.googleapis.com/google.cloud.audit.AuditLog”,“status:{“code”:3,“message:”函数在加载用户代码时失败。这可能是由于用户代码中存在错误。
错误消息:错误:请检查函数日志以查看错误原因:https://cloud.google.com/functions/docs/monitoring/logging#viewing_logs.
其他故障排除留档可以在https://cloud.google.com/functions/docs/troubleshooting#logging.找到
当我使用Firebase部署
时,脚本不会部署,因为我的函数给我一个错误。有人能告诉我如何修复我的代码吗?
这行不通:
exports.dailyReset = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
usersRef.child("{userId}").set({
daily: 0
});
});
这里没有解释该路径中的{userId}
,因此数据库会更新文字路径"/user/{userId}"
,这不是您想要的。
如果知道要更新的用户ID,则应在路径中使用该值:
exports.dailyReset = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
let usersRef = admin.database().ref("users");
usersRef.child("theActualUserIdYouWantToUpdate").set({
daily: 0
});
});
如果您不知道要更新哪个用户ID,则需要查询数据库以确定该用户ID。
如果要循环遍历所有用户,可以执行以下操作:
exports.dailyReset = functions.pubsub.schedule('0 0 * * *').onRun((context) => {
return usersRef.once("value").then((snapshot) => {
let updates = {};
snapshot.forEach((userSnapshot) => {
updates[userSnapshot.key+"/daily"] = 0
});
return usersRef.update(updates);
});
});
如果您不熟悉JavaScript或与其中的实时数据库交互,那么Firebase的云函数并不是学习它的最佳方式。我建议您先阅读Firebase文档(适用于Web开发人员)和/或学习Firebase codelab(适用于Web开发人员)。它们涵盖了许多基本的JavaScript、Web和Firebase交互。您还可以在本地节点中使用AdminSDK。js进程,可以使用本地调试器进行调试。在这些之后,您将更好地为云函数编写代码。
setInterval(beta,1000);} 函数beta(){ var d=document.getElementById(“opopo”).value; $(“table tbody”)。追加(“+插槽+”+“分配+”+“+日期+”+“+限制+”+“+时间+”null“);}); }
我有一个带有读数的数据库集合,每个新读数都需要检查,如果它不寻常,如果是,则需要发送警报。 所以我使用
我是说 现在我可以得到这个房间的孩子了,但是我想知道是否有一种方法可以使用来完成同样的事情。
我正在使用Flutter,我想从我的实时数据库Firebase中检索一些数据。我的实时数据库Firebase中存储了以下数据: 如何从中获取每一条信息?例如,我只想得到“Tom”这个名字?
问题内容: MySQL的时区为“ GMT + 8”,而Tomcat的时区为“ GMT”。当我将 datetime 保存到数据库中时,一切似乎都正常,但是当我检查数据库中的 datetime 值时,看到了“ GMT”值。 另外,当我尝试从数据库中获取值时,值已更改,好像数据库中的值被视为“ GMT + 8”,因此Java将值更改为“ GMT”。 我已经这样设置了连接URL: 但它不起作用。 问题答案
每当我使用Admin SDK从Node运行Firebase实时数据库代码时,进程都会挂起。例如,我可能有一个节点应用程序: 我使用运行。用户将设置为不活动,这很好。但是节点进程将挂起。我必须按ctrl-c才能返回提示。 我应该使用Firebase在节点应用程序中关闭连接或执行其他操作吗?对于Firebase函数,我必须返回从上述调用生成的promise。那么,Firebase函数是否自动处理关闭我