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