【问题标题】:How to check if a node(child) with multiple fields exist in Firebase?如何检查Firebase中是否存在具有多个字段的节点(子)?
【发布时间】:2015-12-28 06:18:50
【问题描述】:

This 显示了一种检查具有给定 id 的节点是否存在的方法。 但是,我正在使用带有随机 id 的 push 方法插入一个节点。 假设节点具有字段 A、B 和 C。 在插入 A = a1、B = b1、C = c1 的节点之前。我想检查是否存在具有此组合的节点。

【问题讨论】:

    标签: javascript firebase


    【解决方案1】:

    您可以随时阅读并检查属性:

    function checkData(data) {
      return data.A === 'a1' && data.B === 'b1' && data.C === 'c1';
    }
    var ref = new Firebase('<my-firebase-app>/item');
    ref.once('value', function(snap) {
      var hasCombination = checkData(snap.val());
    });
    

    但您也可以编写安全规则,使该组合永远存在。使用安全规则编译器 Bolt 可以更轻松地完成此操作,因为 Bolt 允许您将类型映射到路径。

    type Data {
      a: String;
      b: String;
      c: String;
    }
    
    path /data is Data;
    

    此代码生成一组验证规则,确保将仅具有 ABCString 属性的对象保存到 /data 路径。

    【讨论】:

    • 感谢您的回复。您提供的功能会检查所有节点吗?我的意思是项目可以有 10 个具有随机 id 的孩子,这 10 个孩子中的每一个都有字段 A、B 和 C。在插入第 11 个孩子之前(A = a1,B = b1 , C = c1) 我需要确保前 10 个都没有这个。我需要遍历所有 10 个吗?还是您提供的功能会自行完成?如果是,请说明它是如何做到的?
    【解决方案2】:

    正如大卫的回答中所写,我们可以阅读和检查。但是他没有提到我们何时要检查多个子节点。 forEach 方法在这种情况下会有所帮助。所以我们可以使用 forEach 为每个 chlid 应用 David 的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-30
      • 2017-12-05
      • 2018-10-08
      • 2011-04-16
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多