我看到的症状是,在添加对象然后查看由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();
然后排序顺序正确。
重新启动服务器后,值正常,可能是因为数据是从磁盘读入并在某处转换的。
我是否误解了这是如何工作的以及如何通过水线添加对象?
答案 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();
}
...