如何在帆模型中使用datetime

时间:2015-03-17 22:07:22

标签: node.js datetime model sails.js waterline

我想在我的控制器中有一个功能来根据时间范围获取数据。首先,我拥有mongodb中的所有数据,有一个属性ModifiedTime,字符串看起来像2015-02-25T17:17:33Z。其次,我使用ModifiedTime在帆中定义模型:

{ type: 'datetime', columnName: 'ModifiedTime' }

在model.js中,我设置了schema: true。然后在我的控制器中,我尝试使用

 User.find({ModifiedTime : {'<=' : new Date('2015-03-18T00:00:00Z')}}).exec(function(err,st){
      if (err) return res(err);
          if (!st) return res(new Error('Invalid ModifiedTime.'));

          return res.json(st);
    } );

但我什么都没得到,请在浏览中一直看[]。我使用水线http://localhost:1337/User来检查浏览中的数据。我可以看到来自mongodb的所有数据。奇怪的是,我看到ModifiedTime": "2015-02-18T17:36:53Z之类的东西。所以,对我来说,看起来帆中的ModifiedTime仍然是一个字符串,我是对的吗?但我将类型设置为模型中的日期时间。我希望,它可以将mongodb的字符串传输到后台的日期时间,赢了吗?请给出一些建议。我已经花了太多时间:( 非常感谢你! WJS

1 个答案:

答案 0 :(得分:0)

你是对还是错。

在您的数据库中,您声明日期时间是一个字符串。如果它已经是一个字符串,那么你就不能将它设置为你的风帆模型中的日期。您应该简单地比较两个字符串,而不是将2015-03-18T00:00:00Z转换为日期。

 User.find({ModifiedTime : {'<=' : '2015-03-18T00:00:00Z'}}).exec(function(err,st){
      if (err) return res(err);
          if (!st) return res(new Error('Invalid ModifiedTime.'));

          return res.json(st);
    } );

如果您想要使用日期/时间,那么您必须浏览原始数据并将修改时间更改为日期/时间对象。