如何检查Firebase中是否存在具有多个字段的节点(子)?

时间:2015-12-28 06:18:50

标签: javascript firebase

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

2 个答案:

答案 0 :(得分: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;

此代码生成一组验证规则,确保只有StringAB C属性的对象保存到{{ 1}}路径。

答案 1 :(得分:1)

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