【问题标题】:How to fix mongoose "gt" and "lt" not working如何修复猫鼬“gt”和“lt”不起作用
【发布时间】:2019-05-22 21:47:45
【问题描述】:

我正在尝试使用 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);

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query mongoose-schema


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      一个愚蠢的问题。对不起.. 我实际上发现了它的问题.. 这是一个该死的 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 因为这就是我在 http GET req 中定义 staff_id 的方式。这是 /staff/:id/:frm/:to

      无论如何,我们甚至可以使用 where 以及不同的方法来执行此操作...

      /**
       *  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);
      }
      

      原来如此……

      【讨论】:

        猜你喜欢
        • 2011-08-03
        • 2019-11-07
        • 1970-01-01
        • 2012-03-02
        • 2023-03-03
        • 1970-01-01
        • 2021-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多