用于数据验证的Firebase规则

时间:2016-03-20 06:43:56

标签: javascript firebase firebase-realtime-database

假设有如下数据结构,我想要一个不允许添加新车的规则,例如用户无法添加“toyota”。所以,我需要.validate,以使.update必须匹配现有的make。

我尝试过使用带有“.validate”的$ cars:“newData.val()。contains($ cars)”以及所有其他没有运气的方法。任何帮助表示赞赏。

我的代码是:

function InsertBulk(obj) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();

var count = 0;

if (!obj) throw new Error("The array is undefined or null.");

var docsLength = obj.docs.length;
if (docsLength == 0) {
    getContext().getResponse().setBody(0);
}

tryCreate(obj.docs[count], callback);
function tryCreate(doc, callback) {
    var isAccepted = collection.createDocument(collectionLink, doc, callback);

    if (!isAccepted) getContext().getResponse().setBody(count);
}

function callback(err, doc, options) {
    if (err) throw err;

    count++;

    if (count >= docsLength) {
        getContext().getResponse().setBody(count);
    } else {
        tryCreate(obj.docs[count], callback);
    }
}}

火焰基地看起来像:

function setModel(model,make,key){
    if (model && make && key){
        var carsRef = ref.child('cars');
        var makeRef = carsRef.child(make);
        var modelRef = makeRef.child(model);
        var obj = {};
        obj[key] = true;           
        modelRef.update(obj, onComplete);
    }
}

1 个答案:

答案 0 :(得分:2)

禁止添加新的汽车品牌:

"cars": {
  "$brand": {
    ".validate": "data.exists()"
  }
}

本文档的existing data vs new data部分对此进行了介绍。