【问题标题】:Firebase: getting value of a child without knowing its keyFirebase:在不知道其密钥的情况下获取孩子的价值
【发布时间】:2018-01-18 07:33:06
【问题描述】:

如何在不知道子元素键的情况下获取子元素的值?下面是示例数据结构;

->cars
-->3282jasjd893j: doors
-->819idid82jkdf: windows
-->fjf842jr8448r: audi

我需要在不知道键的情况下获取值“门”、“窗”、“奥迪”。

任何建议将不胜感激!

【问题讨论】:

  • 到目前为止你尝试过什么?请分享一些代码。
  • 我们应该用什么语言来神奇地猜测你正在尝试这样做吗?
  • 你必须得到整个 cars 节点,然后遍历它的键。
  • 到目前为止,还没有真正起作用。我能做的最好的事情是使用数组来存储带有 [0]、[1] 等键的值,但这不允许我以后操作数据(当我只知道 1 个键时)。困难在于我的 Keys 是用户 ID,因此系统最多只能知道给定用户的一个 UID,同时,我需要访问所有值以向所有 UID 的设备令牌(值)发送推送通知。
  • @GabrielDiez 我正在使用 JavaScript。

标签: javascript firebase firebase-realtime-database


【解决方案1】:

非常感谢您的所有 cmets 和建议。我现在得到了答案,这里是:

     let inputArray = [];
     snapshot.forEach(snap => {
     inputArray.push(snap.val());
     return false;
   });

【讨论】:

    【解决方案2】:

    虽然您回答了自己的问题,但这可能不是一个好的长期解决方案。

    例如:假设您需要门节点并且有 100,000 个其他节点。您必须加载所有 100,000 个并遍历它们以定位节点。这可能会超出设备的容量并导致用户体验缓慢。

    更好的答案是修复结构:

    cars
     3282jasjd893j:
         item: doors
     819idid82jkdf:
         item: windows
     fjf842jr8448r:
         item: audi
    

    现在您可以简单地查询 cars->item 节点中的“门”,它会返回您想要的节点 - 无需迭代!

     3282jasjd893j:
         item: doors
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      相关资源
      最近更新 更多