使用单个Parse查询计算多个关系结果

时间:2015-03-30 14:26:32

标签: rest parse-platform

我的_User实体设置非常简单,与自身likes关系(反射)。

常见的用例是列表用户。 我列出的用户很少(例如:15),但我也希望显示他喜欢的数量。

关注standard suggested technique from Parse.com,需要查询15个_User中的每一个。_User。 我不认为这是可以接受的,也许2个查询就足够了:

  • 第一个获得前15个likes(s)
  • 第二个获得_User每个{{1}}的数量{{1}}

但我不知道是否可以使用Parse API,所以我正在寻求帮助;)

1 个答案:

答案 0 :(得分:1)

如果列是关系,则是,获取计数将需要每个用户进行查询。

如果您希望每个用户的喜欢数量较少(< 100是我的半随意经验法则),您可以将喜欢建模为指针数组。

有了这个,您只需掌握记录就可以知道计数(即someUser.get("likes").length)。更好的是,查询包含将热切地获取相关用户......

userQuery.include("likes");
userQuery.find().then(function(users) {
    if (users.length) {
        var someUser = users[0];
        var likes = someUser.get("likes");
        if (likes.length) { // see, we can get the count without query
            var firstLike = likes[0];  // we can even get those other users!
            var firstLikeEmail = firstLike.get("email");
        }
    }
});

否则,使用关系,你会陷入另一个查询...

userQuery.find().then(function(users) {
    if (users.length) {
        var someUser = users[0];
        var likes = someUser.get("likes");
        return likes.query().count();
    } else {
        return 0;
    }
}).then(function(count) {
    console.log("the first user has " + count + " likes");
});