无法按日期/时间在Waterline中找到记录

5
如何在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());
});
2个回答

5

datetime类型在Waterline(Sails ORM)中被转换为实际的Javascript日期。因此,它需要与日期对象而不是字符串进行比较。您可以保持代码不变,但将第一行更改为:

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

那么你的查询应该找到所有未来开始的游戏

当然,由于你的代码只返回当前日期,你根本不需要moment

var _date = new Date();

将会同样有效。

1
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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接