水线创建影响排序顺序

时间:2014-03-06 11:09:06

标签: sails.js waterline

我看到的症状是,在添加对象然后查看由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();

然后排序顺序正确。

重新启动服务器后,值正常,可能是因为数据是从磁盘读入并在某处转换的。

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

1 个答案:

答案 0 :(得分: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();
}
...
相关问题