2014-05-07 28 views
4

如何比较sails.js模型中的日期时间?这是我做的,但没有运气。通过日期/时间不能在Waterline中找到记录

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()); 
}); 

回答

4

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(); 

将工作一样好。

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。