【问题标题】:Query Parse Class and Group Results by Year on iOS在 iOS 上按年份查询 Parse Class 和 Group 结果
【发布时间】:2015-07-27 23:53:09
【问题描述】:

我有一个 Parse 类,其中包含一个使用 Date 数据类型的列,我想在 UITableView 中按年份对结果进行分组。

我最初的想法是我可以查询所有记录,从日期中提取年份,然后保存一个年份数组。

然后,我将使用 lessThangreaterThan 运算符再次查询 Parse,以将我的年份数组(XXXX 年 1 月 1 日至 XXX 年 12 月 31 日)中的每个值与 Parse 中的 Date 列进行比较。

有没有更好的方法来做到这一点?我应该以某种方式使用子查询吗?

【问题讨论】:

    标签: javascript parse-platform


    【解决方案1】:

    除了从查询中获取平面数组之外,没有其他方法可以获取。查询所有记录的唯一原因是您是否都需要它们。否则,请限制您的查询,否则您会按照您关心的日期列进行排序,然后在查询之后进行分组。

    您可能会考虑的一个选择是将查询移动到云代码并在服务器上进行分组。这种方法的一个优点是您可以在服务器上使用 underscorejs,它具有开箱即用的 groupBy 功能...

    // in your cloud code js
    var _ = require('underscore');
    
    Parse.Cloud.define("queryMyClass", function(request, response) {
        var query = Parse.Query("MyClass");
        query.ascending("dateColumn");
        query.find().then(function(results) {
            return _.groupBy(results, function(result) {
                return result.get("dateColumn").getYear().toString();
            });
        }).then(function(result) {
            response.success(result);
        }, function(error) {
            response.error(error);
        });
    });
    

    这个 find promise 将被解析为:

    { "114": [pfobject, pfobject, ...],
    { "115": [pfobject, pfobject, ...] ... }
    

    其中 114 表示 2014 年,115 表示 2015 年,依此类推。你可以在客户端的 Objective-c 中做同样的事情,但是 js/underscore 用更少的代码来完成这项工作。

    【讨论】:

    • 谢谢。我以前没有想过为此使用 Cloud Code(我是 Parse 的新手)。我已经成功创建了一个查询并在 Swift 中解析了数据。我认为这将使构建我所追求的表变得容易得多。
    • 哦,不管怎样,我发现getFullYear() 将返回实际年份,似乎是getYear() 的替代品。再次感谢您的帮助!
    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多