无法按date/时间在Waterline中查找logging

如何比较sails.js模型中的date时间? 这是我做的,但没有运气。

var _date = moment().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'; Game.find({ where:{ active: true, start: { '>=' : _date } }, limit: 1, sort: 'start asc' }, function(err, game) { console.log('ERROR: ' + err); console.log('Game OBJ' + game.toString()); }); 

       

网上收集的解决方案 "无法按date/时间在Waterline中查找logging"

datetimetypes在水线(Sails ORM)中转换为实际的Javascriptdate。 所以它需要与date对象进行比较,而不是string。 您可以保持您的代码完全按照原样,但将第一行更改为:

 var _date = new Date(moment().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'); 

然后你的查询应该会find所有将来开始的Game

当然,因为你的代码只是返回当前的date,你根本不需要moment时间:

 var _date = new Date(); 

也将工作。

 var _date = moment().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z'; 

你需要使用下面的行将上面的stringvariables转换为datevariables

 var tempDate = new Date(_date); 

现在使用$ gte而不是'> ='

 Game.find({ where:{ active: true, start: { $gte : tempDate } }, limit: 1, sort: 'start asc' }, function(err, game) { console.log('ERROR: ' + err); console.log('Game OBJ' + game.toString()); }); 

您也可以使用$ gt,$ lt,$ lte。