1

我看到的症状是,在添加一个对象然后查看按 排序的列表后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();

然后排序顺序正确出现。

在我重新启动服务器后,这些值是正常的,大概是因为数据是从磁盘读取并在某处转换的。

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

4

1 回答 1

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();
}
...
于 2014-03-06T14:11:20.143 回答