Как починить мангуст "gt" и "lt" не работает - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь вывести всех сотрудников в заданный диапазон дат с помощью mongoose 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);

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Глупый вопрос.Простите меня .. Я на самом деле обнаружил, что с ним не так .. Это было чертовски TYPO

, вот оно, мы можем реализовать это, используя разные подходы, так как мы храним только дату, мангустаавтоматически преобразует все значения, которые мы предоставляем, в формат ISODate (дата + время).Это на самом деле очень хорошо, потому что похожий шаблон для даты или времени.Так что просто мы можем использовать приведенный выше код. Он будет работать нормально

   /**
 *  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: params.staff_id , все, что мне нужно было сделать, это params.id потому что именно так я определил staff_id в http GET req.который / 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);
}

вот и все ...

0 голосов
/ 23 декабря 2018

Это потому, что ваши параметры отправляют дату + время, тогда как gte и lte принимают только дату.Вывод вашего журнала console.log(new Date(params.frm).toISOString()); должен показывать отметку времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...