用户&#34>专栏,我已经保存了被关注用户的objectId以及"关注者"列i已保存当前用户(关注者) 现在我想获得每个用户的关注者数量..我该怎么做?
答案 0 :(得分:1)
Parse Query用于计算对象 https://parse.com/docs/ios/guide#queries-counting-objects 您可以在其中执行1个查询以获得1个用户的关注者数量。这可以很容易地最大限度地解析api限制,即(每分钟计数对象查询160请求)。对于这个Parse和Me,两者都不建议您使用计数对象,特别是如果您期望有大量用户。
解析建议以避免计数操作 https://parse.com/docs/ios/guide#performance-avoid-count-operations
您应该使用解析云代码(https://parse.com/docs/ios/guide#cloud-code)并在您的用户表中有一个密钥,可以记录该用户的当前关注者数量。
您的案例中的云代码。
Parse.Cloud.afterSave("Followers", function(request) {
if(request.object.existed() == true)
// No need to increment count for update due to some reason
return;
});
// Get the user id for User
var userID = request.object.get("user");// Or request.object.get("user").id;
// Query the user in actual User Table
var UserQuery = Parse.Object.extend("User");
var query = new Parse.Query(UserQuery);
query.get(userID).then(function(user) {
// Increment the followersCount field on the User object
user.increment("followersCount");
user.save();
}, function(error) {
throw "Got an error " + error.code + " : " + error.message;
});
});
也可能发生取消关注,离开删除练习后 https://parse.com/docs/ios/guide#cloud-code-afterdelete-triggers
答案 1 :(得分:1)
您可以使用解析服务器countObjectsInBackground()
函数来完成任务。它为我工作。我已经使用了iOS SDK版本1.17.3
。
这是 Swift 4 示例代码:
let query = PFQuery(className: "yourTableName")
query.whereKey("user", equalTo: "yourUserId")
query.countObjectsInBackground { (count: Int32, error: Error?) in
if error == nil {
print("My followers number: \(count)")
}
有关更多信息:https://docs.parseplatform.org/ios/guide/#counting-objects
希望它能起作用。