匹配 Firebase Cloud Functions 中数据库对象的数组值

德里克 S。

这是我使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从 Firebase 数据库填充 Firebase Cloud Functions 中的数组

用于 Firebase 的 Cloud Functions 为 Algolia 中的 Firebase 数据库对象编制索引

在 Firebase 的 Cloud Functions 中读取数据库数据

如何使用Cloud Functions for Firebase更新Firebase实时数据库中的值

如何获取与Cloud Functions for Firebase中的事件无关的数据库值?

从 Cloud Functions for Firebase 读取数据?

Firebase的Cloud Functions:在文件上传时写入数据库

用于Firebase数据库的Cloud Functions触发器?

Firebase Cloud Functions-访问调试或发布数据库

如何在Firebase Cloud Functions的index.js中读取Firebase数据库条目?

从 Cloud Functions 的 Firebase 实时数据库中获取数据

从Cloud Functions for Firebase中的数据库触发器中获取用户ID?

如何在Cloud Functions for Firebase中访问多个实时数据库实例

如何使用Cloud Functions中的Cloud DataStore或Cloud SQL for Firebase?

Cloud Run 或 Kubernetes 上的 Firebase 实时数据库触发器,而不是 Cloud Functions

使用 Firebase Cloud Functions 扇出数据

从 Firebase 获取数据 - Google Cloud Functions

Firebase Cloud Functions HTTPS中的参数

在Firebase Cloud Functions中创建PDF

在Firebase Cloud Functions中记录'jsonPayload'

计算 Firebase Cloud Functions 中的孩子

Firebase Functions将数据写入Cloud Firestore数据库时,写入次数是否计数?

Firebase的Cloud Functions-从数据库触发器获取父数据

如何在Cloud Functions for Firebase中读写Firebase存储?

如何使用Cloud Functions(Typescript)在Firebase Realtime数据库中的.ref(/ path)外部创建新的父节点?

如何使用 Cloud Functions 创建新的 Firebase 实时数据库实例?

用于Firebase的Cloud Functions-创建新用户时写入数据库

Firebase Cloud Functions Shell无法在实时数据库上执行写入操作

Firebase Cloud Functions数据库触发器'onCreate不是函数'