首页 > 解决方案 > 如何修复猫鼬“gt”和“lt”不起作用

问题描述

我正在尝试使用猫鼬 ODM 让所有工作人员在给定的日期范围内,但似乎找不到方法。

我尝试使用不同的日期格式,但想出在我的数据库中存储 ISO 日期。现在它以ISODate("2018-12-23T00:00:00Z")格式保存和检索日期。

但是,我想要的是让所有工作人员使用给定的日期范围$gte$lte

/**
 *  Get all attendance of one member for a specific time frame(a month)
 * 
 */
module.exports.getAttendanceTimeFrame = function(params,callback){
    console.log(new Date(params.frm).toISOString());
    AttendanceStaff.find({staff_id: params.staff_id, date:{$gte:params.frm, $lte:params.to}},callback);
}

这什么都没有,但是这给了当天签名的所有工作人员

Model.find({date:'2018-12-22'},callback);

标签: node.jsmongodbmongoosemongodb-querymongoose-schema

解决方案


那是因为您的参数正在发送日期+时间,而 gte 和 lte 只接受日期。您的日志输出console.log(new Date(params.frm).toISOString());应显示时间戳


推荐阅读