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

时间:2013-11-11 04:32:25

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

我刚开始使用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的一部分?

2 个答案:

答案 0 :(得分:10)

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

如果你有正确的日期格式(正如Jeremie提到的那样)。我个人将moment(startDate).toISOString()的日期存储在您moment(startDate)可以local date and time工作的客户端上。

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

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

e.g。

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

答案 1 :(得分:7)

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

格式化您的日期将类似于

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