2015-10-19 35 views
18

我有数据设置是这样的:如何在Firebase中为动态密钥编写.indexOn?

Tasks:{ 
    Group 1:{ 
    pushid1:{ 
     date: 18921949021, 
     title: "Do something" 
    }, 
    pushid2:{ 
     date: 18921949021, 
     title: "Do something else" 
    } 
    }, 
    Group 2:{ 
    pushid3:{ 
     date: 18921949021, 
     title: "Do another thing" 
    } 
    } 
} 

我按日期引用它,所以我只得到了一定时间之后进行的任务。

var now = Date.now(); 
var taskRef = new Firebase(FB + "/tasks/" + thisGroup); 
taskRef.orderByChild('date').startAt(now).on("child_added", function(snap){ 
    console.log(snap.val()); 
}); 

这一切工作正常,为每个组我得到一个警告消息,说是这样的:

FIREBASE WARNING: Using an unspecified index. Consider adding ".indexOn": "date" at tasks/Group 1 to your security rules for better performance 

我如何添加到我的安全规则?我无法为用户创建的每个组添加一个,是否有某种类型的通配符条目?

+0

嗨马蒂。你有没有解决这个问题?或决定改变结构?谢谢 – jovanjovanovic

+0

@jovanjovanovic弗兰克的答案为我工作。 –

回答

34

我猜你正在寻找:

{ 
    ".read": true, 
    ".write": true, 
    "rules": { 
    "Tasks": { 
     "$groupid": { 
     ".indexOn": "date" 
     } 
    } 
    } 
} 

的火力地堡文档通常是一个相当不错的读取。在security guide中花费一个小时或更少的时间,将确保您对此和其他许多主题有更好的理解。

+1

我仍然收到“FIREBASE WARNING:使用未指定的索引。考虑在/请求您的安全规则时添加”.indexOn“:”clinics/1/date“以获得更好的性能” – Steve

+1

我得到了类似的问题,身份验证提供者(例如谷歌,微博)和身份证件(例如电子邮件)。我不能硬编码,我必须通过叶元素索引什么选项,当父级的两级我们不能硬编码时。感谢任何帮助 – user1687711

+0

@ marty-h'$ groupid'是提问者所要求的通配符条目。 – KarolDepka