我正在使用 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类添加新查询...需要你的建议。提前谢谢。
答案 0 :(得分:1)
如果您保留用户类中保留订阅数和收藏数的列,该怎么办?因此,当用户点击" favorite"时,会发出一个请求来增加相应的列(有一个方便的parseObject.increment(" key")方法可用)。这将为每个用户的查询节省一两个电话。如果您返回了4个用户,那么4个查询与12个用户之间存在差异。
或者,您可以使用queryForSubscription.count(),而不是使用queryForSubscription.find()。这样可以节省大量请求的信息,因此您可以立即获取数字,而不必执行queryResult.length;
我为没有回答你想要的问题而道歉。我很擅长使用promises语法,但这是一个嵌套下一个查询的工作:
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);
}
}
})