javascript - Firebase Cloud Function 使用不正确的值更新 ref
问题描述
如果节点不存在,我想向数据库添加一个新节点。我不想向客户端返回任何东西,我只想用新值更新数据库。在客户端上,我有一个监听器来观察credit_counts
属性,一旦发生更新,它就会在那里接收它并通知所有用户这个特定用户有一个新的信用。
在下面的代码中,我检查以查看if (!snapshot.exists()
,如果不存在,我使用admin.database().ref('/user_credits/{creditId}/{userId}').set({ dict });
. 粘贴网址后,我检查数据库,布局为:
我是一名 Swift 开发人员。在 Swift 中,我可以这样做:
Database.database().reference().child("/user_credits/\(creditId)/\(userId)").setValue(dict) and the tree will be correct.
user_credits > {creditId} > {userId} > dict
不正确。应该是user_credits > sample_123 > user_xyz > dict values
。我哪里错了?
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.updateViewsCtAtPostsRef = functions.https.onRequest((request, response) => {
const currentTimeStamp = Date.now();
const receivedTimeStamp = admin.database.ServerValue.TIMESTAMP;
const creditId = "sample_123";
const userId = "userId_xyz";
admin.database().ref('user_credits').child(creditId).child(userId).once('value', snapshot => {
if (!snapshot.exists()) {
var dict = {
"joined_date": receivedTimeStamp,
"timeStamp": receivedTimeStamp,
"credits_count": 1
};
return admin.database().ref('/user_credits/{creditId}/{userId}').set({ dict });
} else {
const previousTimeStamp = snapshot.child("timeStamp").val();
const creditsCount = snapshot.child("credits_count").val();
if (previousTimeStamp + whatever) < currentTimeStamp {
let updatedCount = creditsCount + 1
return admin.database().ref('/user_credits/{creditId}/{userId}').update({ "timeStamp": receivedTimeStamp, "credits_count": updatedCount });
} else {
return true
}
}
});
});
解决方案
我不得不将 ref 更改为:
return admin.database().ref('/user_credits/' + creditId + '/' + userId).set({ "joined_date": receivedTimeStamp, "timeStamp": receivedTimeStamp, "credits_count": 1 });
我还必须更新 else 语句中的 ref 以遵循相同的格式。
推荐阅读
- networking - 2个具有不同网络掩码的主机可以相互对话吗?
- reactjs - 如何在 React 中将 i18next 翻译添加到输入的占位符?
- python - AttributeError:部分初始化的模块“火炬”没有属性“cuda”
- python-3.x - 如何在django前端显示后端流数据
- gnuplot - 使用 Gnuplot 拟合数据
- c# - 未处理的异常 Json 在 Blazor 上显示数据
- apache - Apache 不发送 Web 套接字的主体
- unreal-engine4 - 从数组节点获取随机项,当尝试设置它时会给出一个随机索引
- r - 使用 dplyr 重命名变量
- cmd - nvm 使用给出 Execution of the Windows Script Host Failed 错误