无法按日期/时间在 Waterline 中找到记录
Posted
技术标签:
【中文标题】无法按日期/时间在 Waterline 中找到记录【英文标题】:Can't find records in Waterline by date/time 【发布时间】:2014-06-24 23:33:21 【问题描述】:如何比较sails.js 模型中的日期时间?这就是我所做的,但没有运气。
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());
);
【问题讨论】:
【参考方案1】:datetime
类型在 Waterline(Sails ORM)中转换为实际的 javascript 日期。所以它需要与日期对象进行比较,而不是字符串。您可以保持代码原样,但将第一行更改为:
var _date = new Date(moment().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z');
那么您的查询应该会找到所有在未来开始的Game
s。
当然,由于您的代码只是返回当前日期,因此您根本不需要 moment
:
var _date = new Date();
也可以。
【讨论】:
【参考方案2】:var _date = moment().format('YYYY-MM-DDTHH:mm:ss.SSS') + 'Z';
您需要使用下面的行将上面的字符串变量转换为日期变量
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。
【讨论】:
以上是关于无法按日期/时间在 Waterline 中找到记录的主要内容,如果未能解决你的问题,请参考以下文章