【问题标题】:Sails.js Waterline query modifiers for dates with sails-mysql?Sails.js 使用sails-mysql 的日期的水线查询修饰符?
【发布时间】:2013-11-22 19:31:05
【问题描述】:

我刚开始使用 Sails.js 及其 ORM、Waterline,并且非常喜欢它,但我不知道如何使用查询修饰符来处理日期。我正在使用sails-mysql。具体来说,我正在尝试获取在两个特定日期之间具有日期时间字段的行。我试过这样做:

MyModel.find()
    .where({ datetime_field: { '>=': startDate } })
    .where({ datetime_field: { '<=': endDate } })
    .done(function(err, objects){
        // ...
    });

startDateendDate 是两个 Date 对象。我还尝试使用toString() 将它们转换为字符串。在这两种情况下,我都从数据库中获取每一行,而不是两个日期之间的行。有没有办法做到这一点,或者这个功能还不是 Waterline 或sails-mysql 的一部分?

【问题讨论】:

    标签: mysql node.js orm sails.js waterline


    【解决方案1】:

    您需要将日期格式化为 YYYY-MM-DD 格式的字符串。 如果您在格式化日期方面需要帮助,moment.js 有很多很棒的功能。

    格式化你的日期看起来像

    var formatedStartDate = moment(startDate).format('YYYY-MM-DD');
    

    【讨论】:

      【解决方案2】:

      在同一条船上(没有双关语),但使用sails-mongo。

      只要您有正确的日期格式(如 Jeremie 所述)。我个人将日期以UTC moment(startDate).toISOString() 存储在客户端上,您可以moment(startDate)local date and time 工作。

      查看Waterline source for deferred queries(请参阅where 方法),它应用了它认为有效的最新datetime_field 标准。

      在浏览了代码、搜索和群组之后,我没有找到任何有用的东西。我当然希望我错过了一些明显的东西,但现在我目前的建议是将结果锚定在您的 startDate 上,然后限制它,

      例如

      .where({ datetime_field: { '>=': startDate } })
      .limit(100)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-14
        • 2014-09-27
        • 1970-01-01
        • 2015-12-14
        • 1970-01-01
        • 2015-07-07
        • 2014-01-01
        • 1970-01-01
        相关资源
        最近更新 更多