这是我的第一个使用Google Cloud Functions& amp;火力地堡。我试图找到我要返回的数组的单个值并将其与设置变量进行比较,如果匹配,则在同一帐户中更新另一个子项的值。
我的应用程序用户可以在数据库中存储的login / user_id下向数据库添加记录。我试图获取" RecordName"的列表这是每个用户在其帐户中存储的login / user_id下的子项。
所以基本上每个" RecordName"在整个数据库中。当我想为这些记录运行特价时,我需要将该记录的名称与特殊记录的名称相匹配,如果匹配,则在该用户的帐户下更新另一个子值(& #34;特殊" =真。)。这样,当他们下次加载他们的应用程序时,我会突出显示该记录,因此他们知道它是特殊的。
当我使用..
const ref = admin.database().ref(`/store`);
...使用以下代码...
ref.on('value', function(snapshot) {
// puts ALL items of the object into array using function ..
console.log(snapshotToArray(snapshot));
});
......和功能......
function snapshotToArray(snapshot) {
var returnArr = [];
snapshot.forEach(function(childSnapshot) {
var item = childSnapshot.val();
item.key = childSnapshot.key;
returnArr.push(item);
});
return returnArr;
};
...我得到整个数组就像它在数据库中一样:
-store
-{ones_users_id}
-recordname: value1
-special: false
-{anothers_users_id}
-recordname: value2
-special: false
等。等。
如果我的特殊记录被调用,"新手记录",什么是取出密钥的每个单独值的最佳方法:"记录名"从数组中,将每一个与var =" Newbie Record"如果匹配,则更新密钥的值:" special"是真的吗?
我是JSON和NodeJS的新手,我一直在这里寻找答案,无法找到我正在寻找的东西。您的反馈意见非常有用。
答案 0 :(得分:0)
听起来您正在寻找查询您的数据库中有DeactivateActCtx(0, cookie);
ReleaseActCtx(hActCtx);
的节点并更新它们。
一种简单的方法:
"recordname": "Newbie Record"
与您的代码的主要区别:
const ref = admin.database().ref(`/store`);
const query = ref.orderByChild("recordname").equalTo("Newbie Record");
query.once('value', function(snapshot) {
snapshot.forEach(function(child) {
child.ref.update({ special: true })
});
});
只读取一次数据。once()
的子节点,因为查询可能会导致多个节点。snapshot
属性。