【发布时间】:2016-11-19 08:35:20
【问题描述】:
Meteor 服务器代码更新 Mongodb 集合,dateField 的值如下所示ISODate("2016-11-19T00:00:00Z")
客户端选择了dateStart和dateFinish,看起来像这样
$('input[name="startDateStr"]').val() // => "2016-11-19"
所以我转换了用户条目,以便我可以使用它来获取与以下 mongodb 查询匹配的dateField 的文档;
dateToISO: (date) => { // date format in YYYY-MM-DD
const dArr = date.split('-');
return new Date(parseInt(dArr[0]), parseInt(dArr[1]) - 1, parseInt(dArr[2]));
}
然后将结果以格式为 DD/MM/YYYY 的日期呈现给用户
let start = utility.dateToISO(dict.get('inquiryStartDate'));
let end = utility.dateToISO(dict.get('inquiryEndDate'));
////Both of the above prints: Sat Nov 19 2016 00:00:00 GMT+1100 (AEDT)
return myCol.find({
date: {
$gte: start,
$lte: end
}
}, {
transform: function(doc) {
doc.date = moment(doc.date).format('DD/MM/YYYY');
return doc;
}
});
尽管存在一些文档事件,但代码未能返回任何文档事件。知道为什么以及如何解决它吗?
【问题讨论】:
-
您在代码中注释
Both of the above prints: Sat Nov 19 2016 00:00:00 GMT+1100 (AEDT),这样只有日期字段的值与Sat Nov 19 2016 00:00:00 GMT+1100 (AEDT)完全相同的文档才会被返回。 -
当您从查询中删除 $lte:end 时它是否有效?
-
@Khang 为了进行这种压缩,最好将一个日期转换为另一个日期的格式是什么?现在确定这是否是问题所在,因为如果日期值发生变化,相同的代码可以正常工作。
-
@Veeram 是的,它确实有效。但我不明白为什么以及如何解决它。
标签: mongodb date datetime meteor