Parse platform 解析-多个嵌套查询

Parse platform 解析-多个嵌套查询,parse-platform,Parse Platform,我正在使用Parse编写javascript代码。我有用户类、订阅类和收藏类。所有用户的订阅信息都存储在订阅类中,而他们最喜欢的项目信息存储在最喜欢的类中,因此这就像是一对多的关系 我想检索用户信息、每个用户的订阅计数和它的收藏夹项目计数,并将它们存储在对象数组中 我的尝试如下: query.find().then(function(objects) { return objects; }).then(function (objects) { o

我正在使用Parse编写javascript代码。我有用户类、订阅类和收藏类。所有用户的订阅信息都存储在订阅类中,而他们最喜欢的项目信息存储在最喜欢的类中,因此这就像是一对多的关系

我想检索用户信息、每个用户的订阅计数和它的收藏夹项目计数,并将它们存储在对象数组中

我的尝试如下:

    query.find().then(function(objects) {
        return objects;
    }).then(function (objects) {

        objects.forEach(function(object) {

            var subscription = Parse.Object.extend('Subscription');
            var queryForSubscription = new Parse.Query(subscription);
            queryForSubscription.equalTo('subscriptionUser', object);           
            queryForSubscription.find().then(function(subscriptions) {

            var userEmail = object.get('email');
            var subscriptionCount = subscriptions.length;

            var sub = [
                userEmail,
                subscriptionCount
            ];
            userArray.push(sub);
        }
    });             
这段代码可以很好地获取订阅计数,但我不太确定如何并行获取收藏计数并同时将其保存到数组中

例如,有用户A和用户B,最终的预期结果如下:

    [{User A's email, A's subscription count, A's favorite count},
    {User B's email, B's subscription count, B's favorite count}]

我不太确定该把最喜欢的课程的新查询放在哪里…需要你的建议。提前感谢您。

如果您保留了一些列,比如在用户类中,记录了订阅和收藏夹的数量,该怎么办?因此,当用户单击“favorite”时,会请求增加相应的列(有一个方便的parseObject.increment(“key”)方法可用)。这将为每个用户节省一两个查询。如果返回4个用户,这就是4个查询与12个查询之间的差异

或者,您可以使用queryForSubscription.count()代替queryForSubscription.find()。这将节省大量被请求的信息,因此您可以立即获得号码,而无需执行queryResult.length

我很抱歉没有回答你想要的问题。我对Promissions语法的理解很糟糕,但下面是嵌套下一个查询的工作:

  query.find().then(function(objects) {
    return objects;
}).then(function (objects) {

    objects.forEach(function(object) {

        var subscription = Parse.Object.extend('Subscription');
        var queryForSubscription = new Parse.Query(subscription);
        queryForSubscription.equalTo('subscriptionUser', object);           
        queryForSubscription.count().then(function(subscriptionCount) {

            var favorite = Parse.Object.extend('Favorite');
            var queryForFavorite = new Parse.Query(favorite);
            queryForFavorite.equalTo('favoriteUser', object);           
            queryForFavorite.count().then(function(favoritesCount) {

                var userEmail = object.get('email');
                //var subscriptionCount = subscriptions.length; //used count instead

                var sub = [
                userEmail,
                subscriptionCount,
                favoritesCount
                ];
                userArray.push(sub);
        }
    }
})

谢谢你的回答!我之所以使用“find()”而不是“count()”,是因为我需要订阅类中的其他列。对不起,我应该早点提到这件事!我不太确定增加两列来记录每个类的数量是否是一种好方法……我是一个非常面向SQL的人,太笨了以至于无法理解解析对象/查询