【问题标题】:waterline createdAt affecting sort order水线创建在影响排序顺序
【发布时间】:2014-03-06 11:09:06
【问题描述】:

我看到的症状是添加一个对象然后查看由createdAt: 'desc' 排序的列表后,新对象位于列表的末尾,但应该位于列表的开头。我注意到日期显示为例如"Thu Mar 06 2014 10:52:56 GMT+0000 (GMT)" 而其他对象的日期类似于 "2014-03-06T10:52:56.875Z"

如果我更改dql.js 中的行:

  if(self.autoCreatedAt) values.createdAt = new Date();

  var today = new Date();
  if(self.autoCreatedAt) values.createdAt = today.toISOString();

那么排序顺序就正确了。

我重启服务器后,数值就OK了,大概是因为数据是从磁盘读入并在某处转换的吧。

我是否误解了它的工作原理以及如何通过水线添加对象?

【问题讨论】:

    标签: sails.js waterline


    【解决方案1】:

    我遇到了类似的问题。但前提是我使用日期字符串为日期字段提供服务。

    我通过在我的模型中添加以下方法解决了这个问题: 他们在保存之前将日期字符串转换为日期对象。

    ...
    beforeCreate: function(values, cb) {
        if(values.createdAt && typeof value.createdAt === 'string'){
            values.createdAt = new Date(Date.parse(values.createdAt));
        }
        return cb();
    },
    beforeUpdate: function(values, cb){
        if(values.createdAt && typeof value.createdAt === 'string'){
            values.createdAt = new Date(Date.parse(values.createdAt));
        }
        return cb();
    }
    ...
    

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 2019-12-30
      相关资源
      最近更新 更多