【问题标题】:how to use datetime in sails model如何在风帆模型中使用日期时间
【发布时间】:2024-04-25 19:45:01
【问题描述】:

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

{ 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 字符串传输到 datetime,不是吗?请给一些建议。我已经花了太多时间了:( 非常感谢! WJS

【问题讨论】:

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


    【解决方案1】:

    你是对的/错的。

    在您的数据库中,您声明日期时间是一个字符串。如果它已经是一个字符串,那么您不能将其设置为您的风帆模型中的日期。您应该简单地比较两个字符串,而不是将 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);
        } );
    

    如果您真的想使用日期/时间,那么您必须检查原始数据并将修改后的时间更改为日期/时间对象。

    【讨论】:

    • 嗨 Meeker,非常感谢您的提示。好的,我认为最简单的方法是比较字符串。只是为了进一步了解。我在此链接github.com/balderdashy/waterline-docs/blob/master/models.md 中看到“日期时间检查此记录中的字符串是否看起来像 javascript 日期时间”,此验证规则是什么意思?有没有一种简单的方法可以通过这种方式进行转换?只是想知道:) 谢谢
    • 欢迎您!如果您愿意,您可以将其验证为日期并将其保留为字符串。 {type:string',date:true} - 这应该做你想要的。您不能使用 {type:date} 因为您当前的日期是字符串。回答你的问题?
    • 嗨米克,是的,我明白了。我刚刚尝试了你的想法,但我总是抛出错误:TypeError:对象不是函数。通过调用函数。问题出在哪里?谢谢
    • 奇怪的是,如果我将 '
    • 对不起,你可以试试'datetime',文档说日期需要是一个日期对象,而日期时间只需要查看部分。
    最近更新 更多