小编mit*_*sso的帖子

如何在Firebase中查询相关记录?

给定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

6
推荐指数
1
解决办法
1100
查看次数

标签 统计

firebase ×1