Sails.js 使用sails-mysql 的日期的水线查询修饰符?

Posted

技术标签:

【中文标题】Sails.js 使用sails-mysql 的日期的水线查询修饰符?【英文标题】:Sails.js Waterline query modifiers for dates with 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 的一部分?

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于Sails.js 使用sails-mysql 的日期的水线查询修饰符?的主要内容,如果未能解决你的问题,请参考以下文章

Sails.js 对关联值的查询

Sails.js 将密钥和数据流式传输到 Angular

Sails.Js - 我如何在sails.Js 中进行分页

Sails.js:用户注册后如何使用sails-generate-auth返回访问令牌?

Sails.js 简单的私人消息传递(发布/订阅和模型)

使用 passport.js、sails.js API 和 ember.js 登录 Facebook