在“用户”列中,我保存了要关注的用户的objectId,在“关注者”列中,我保存了currentUser(关注者)现在我想获取每个用户的关注者数量..我该怎么做?
解析查询以计数对象https://parse.com/docs/ios/guide#queries-counting-objects您可以在其中执行1个查询来获得1个用户的关注者数量。这可以轻松地最大化解析API的限制,即(每分钟统计对象查询160个请求)。对于本“解析”和“我”,两者都不建议您使用计数对象,特别是在您期望大量用户的情况下。
解析建议以避免计数操作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
您可以使用Parse Server 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
希望它起作用。