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

lma*_*nco 9 mysql orm node.js sails.js waterline

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

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

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

小智 10

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

如果你有正确的日期格式(正如Jeremie提到的那样).我个人moment(startDate).toISOString()在客户端存储UTC日期,您可以moment(startDate)当地日期和时间工作.

查看延迟查询Waterline源(请参阅where方法),它应用datetime_field它发现的最新标准有效.

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

例如

.where({ datetime_field: { '>=': startDate } })
.limit(100)
Run Code Online (Sandbox Code Playgroud)


Jér*_*ker 7

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

形成你的约会看起来像

var formatedStartDate = moment(startDate).format('YYYY-MM-DD');
Run Code Online (Sandbox Code Playgroud)