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)
// ...
);
startDate
和 endDate
是两个 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 的日期的水线查询修饰符?的主要内容,如果未能解决你的问题,请参考以下文章