我试图让所有的工作人员在一个给定的日期范围内使用猫鼬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);发布于 2018-12-23 12:40:09
一个愚蠢的问题。原谅我..。我发现它到底出了什么问题。这是一个该死的错误
这里我们可以使用不同的方法来实现这一点,因为我们只存储一个日期,猫鼬将自动将我们提供的所有值转换为ISODate格式(date+time)。它实际上非常好,因为一个类似的模式在一个日期或时间。因此,简单地说,我们可以使用我给出的上述代码,它将很好地工作。
/**
* 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.id, date:{$gte:params.frm, $lte:params.to}},callback);
}实际上,我所要做的不是staff_id: staff_id :params.id,而是params.id,因为这是我在http req中定义staff_id的方式。那就是/staff/:id/:frm/:to
不管怎样,我们甚至可以用不同的方法.
/**
* Get all attendance of one member for a specific time frame(a month)
*
*/
module.exports.getAttendanceTimeFrame = function(params,callback){
console.log(params.id);
AttendanceStaff.find({date:{$gte:params.frm, $lte:params.to}}).sort({date:-1}).where({staff_id:params.id}).exec(callback);
}所以就这样..。
发布于 2018-12-23 07:45:18
这是因为您的params发送的是date+time,而gte和lte只需要日期。日志console.log(new Date(params.frm).toISOString());的输出应该显示时间戳。
https://stackoverflow.com/questions/53901423
复制相似问题