给定Firebase中的这个数据库结构:
{
"users": {
"user1": {
"items": {
"id1": true
}
},
"user2": {
"items": {
"id2": true
}
}
},
"items": {
"id1": {
"name": "foo1",
"user": "user1"
},
"id2": {
"name": "foo2",
"user": "user2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪种查询属于特定用户的项目更有效?
Firebase文档似乎暗示了这一点:
var itemsRef = new Firebase("https://firebaseio.com/items");
var usersItemsRef = new Firebase("https://firebaseio/users/" + user.uid + "/items");
usersItemsRef.on("child_added", function(data){
itemsRef.child(data.key()).once("value", function(itemData){
//got the item
});
});
Run Code Online (Sandbox Code Playgroud)
但使用.equalTo()查询也可以:
var ref = new Firebase("https://firebaseio.com/items");
ref.orderByChild("user").equalTo(user.uid).on("child_added", function(data){
//got the item
});
Run Code Online (Sandbox Code Playgroud)
后一个代码看起来更简洁,并且不需要将项密钥非规范化为用户记录,但是我不清楚它是否是一种效率较低的方法(假设我在"用户"上创建索引).
谢谢.
firebase ×1