这是我使用 Google Cloud Functions 和 Firebase 的第一个应用项目。我试图找到我正在返回的数组的单个值并将其与设置变量进行比较,如果匹配,则更新同一帐户中另一个孩子的值。
我的应用程序用户可以在存储在数据库中的登录名/用户 ID 下向数据库添加记录。我正在尝试获取“RecordName”的列表,该列表是每个用户存储在其帐户中的登录名/用户 ID 下的子项。
所以基本上整个数据库中的每个“RecordName”。当我想为这些记录运行特价时,我需要将该记录的名称与我在特价中的记录名称相匹配,如果匹配,则更新该用户帐户下的另一个子值(“special”= true .) 这样,当他们下次加载他们的应用程序时,我会突出显示该记录,以便他们知道它是特别的。
当我使用..
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” 进行比较,如果它们匹配,更新key的值:“special”为真?
我是 JSON 和 NodeJS 的新手,我一直在这里寻找答案,但找不到我正在寻找的确切内容。您的反馈将非常有帮助。
听起来您要查询数据库以查找具有"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
节点,因为查询可能会产生多个节点。special
属性。我建议在文档中阅读更多有关Firebase 查询的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句