我如何使用解析保存的数据来计算关注者的数量,如下所示:

问题描述 投票:1回答:2

我已经保存了我的关注者列表,如表格图片所示enter image description here

在“用户”列中,我保存了要关注的用户的objectId,在“关注者”列中,我保存了currentUser(关注者)现在我想获取每个用户的关注者数量..我该怎么做?

ios swift parse-platform
2个回答
2
投票

解析查询以计数对象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


1
投票

您可以使用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

希望它起作用。

© www.soinside.com 2019 - 2024. All rights reserved.