【发布时间】:2015-12-28 06:18:50
【问题描述】:
This 显示了一种检查具有给定 id 的节点是否存在的方法。 但是,我正在使用带有随机 id 的 push 方法插入一个节点。 假设节点具有字段 A、B 和 C。 在插入 A = a1、B = b1、C = c1 的节点之前。我想检查是否存在具有此组合的节点。
【问题讨论】:
标签: javascript firebase
This 显示了一种检查具有给定 id 的节点是否存在的方法。 但是,我正在使用带有随机 id 的 push 方法插入一个节点。 假设节点具有字段 A、B 和 C。 在插入 A = a1、B = b1、C = c1 的节点之前。我想检查是否存在具有此组合的节点。
【问题讨论】:
标签: javascript firebase
您可以随时阅读并检查属性:
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;
此代码生成一组验证规则,确保将仅具有 A、B 和 C 的 String 属性的对象保存到 /data 路径。
【讨论】:
正如大卫的回答中所写,我们可以阅读和检查。但是他没有提到我们何时要检查多个子节点。 forEach 方法在这种情况下会有所帮助。所以我们可以使用 forEach 为每个 chlid 应用 David 的解决方案。
【讨论】: