首页 > 解决方案 > 将数组添加到查询中的所有节点 - Firebase JS

问题描述

我得到了这样的结构:

{'-LH88EMN8Q0Mh5ZxbXyx':{
  u_id: 101,
  g_id: 6064,
  members:[101, 102]
  last_msg:'testing'
},
 '-eyJ0eXAiOiJKV1QiLC':{
  u_id: 102,
  g_id: 6065,
  members:[101, 102],
  last_msg:'testing'
},
etc
}

我正在使用查询来恢复具有组 ID 的每个项目;但我需要在查询中的每个交互中添加一个当前 user_id 的数组。就像是:

firebase.database().ref('msgs').orderByChild('g_id').equalTo(gID) .update({ dBy: [user_id] });

但不承认该功能;或者什么都没有发生。

标签: javascriptfirebasereact-nativefirebase-realtime-database

解决方案


Firebase 实时数据库只有在知道要写入的确切位置时才能写入数据。它不支持您可能从 SQL 中知道的更新查询之类的东西。

这意味着您需要将侦听器附加到查询,并从那里更新每个单独的结果。

它看起来像这样:

firebase.database().ref('msgs').orderByChild('g_id').equalTo(gID)
    once("value", function(snapshot) {
        snapshot.forEach(function(child) {
            child.ref.update({ dBy: [user_id] });
        });
    });

推荐阅读