【问题标题】:Sails JS - Waterline ORM - Query Date only, not TimeSails JS - Waterline ORM - 仅查询日期,而不是时间
【发布时间】:2015-08-18 17:07:20
【问题描述】:

希望查询仅限日期是否有人遇到此问题?

示例代码:

    ////MODEL
    module.exports = {
      attributes: {
        date: {
            type: 'date',
            required: true
        }    
      }
    };

    ////CONTROLLER
    var today = moment().toISOString();

    var queryObj = { date: today };
    var newDay = { date: today };

    Day.findOrCreate(queryObj, newDay).exec(function(err, day) {            
        console.log(day)
    });

显然,这会在每次刷新时创建一条新记录,因为 iso 字符串会随着每一秒的过去而改变。

感谢您的帮助!

【问题讨论】:

  • 只是在 Sails v1.x 中不推荐使用 type:'date' 的评论。我认为建议的方法是type:'string', columnType:'date'(或时间戳)

标签: sails.js waterline sails-mongo


【解决方案1】:

您可以查询包含今天所有日期的日期范围,而不是查询单个日期。首先,您需要实际为该范围创建值——我使用 Moment 进行了处理,但可能有更好的方法:

var begin = moment(moment().format("YYYY-MM-DD")).toISOString();
var end = moment(moment().format("YYYY-MM-DD")).add(1, 'days').toISOString();

然后你可以使用查询运算符来搜索范围:

var queryObj = {date: {'>=': begin, '<': end}};
Day.findOrCreate(queryObj, newDay).exec(function(err, day) {            
    console.log(day)
});

一如既往,请注意时区问题!

【讨论】:

  • DUHH 我怎么错过了! #linearthinking -- 谢谢朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多