【问题标题】:How to store a time value in MongoDB using SailsJS v0.11.3?如何使用 SailsJS v0.11.3 在 MongoDB 中存储时间值?
【发布时间】:2015-12-16 17:34:48
【问题描述】:

我正在使用 SailsJS 和 MongoDB,我有一个有两个模型的 API,我想存储 Date and Time separately 但正如 in the official documentation 所说,它没有 typeof Time 属性,只有 DateDateTime。所以,我使用 DateTime 来存储时间值。

我将请求中的值发送到数据库中,存储dates没有问题,我只是发送一个值,例如:

2015-12-16

就是这样,它存储在表中没有问题,但是当我想存储Time 值时:

19:23:12

它不起作用。错误是:

{
  "error": "E_VALIDATION",
  "status": 400,
  "summary": "1 attribute is invalid",
  "model": "ReTime",
  "invalidAttributes": {
    "value": [
      {
        "rule": "datetime",
        "message": "`undefined` should be a datetime (instead of \"19:23:12\", which is a string)"
      }
    ]
  }
}

那么,知道如何将时间值发送到DateTime 属性中吗?

我也尝试过以不同的格式发送它,例如:

  • 0000-00-00T19:23:12.000Z
  • 0000-00-00T19:23:12
  • T19:23:12.000Z
  • 19:23:12.000Z
  • 19:23:12

但其中任何一个都可以正常工作。

我还在考虑以纯文本形式存储两个值(日期和时间),我的意思是 typeof String 属性。但是我需要做一些查询,不知道会不会影响水线ORM的性能。

请任何形式的帮助都会派上用场。 非常感谢!

【问题讨论】:

    标签: node.js datetime time sails.js sails-mongo


    【解决方案1】:

    这里有两个选择。最好的办法是将日期和时间简单地存储为datetime,并在需要使用它们时将它们解析为单独的值。 MongoDB will store this in BSON format,这将是最有效的方法。

    否则,您可以使用 string 并创建自定义验证规则 as described in the Sails documentation

    【讨论】:

    • 非常感谢!但是我怎样才能解析你提到的数据以便使用它并向用户展示呢?我是 JavaScript 新手
    • 我不确定它是如何从数据库中返回的。要么它将作为 JavaScript Date 本身返回,要么您需要使用您获得的值实例化一个新的 Date。在这里查看Date reference。顶部向您展示了如何实例化 (var datetime = new Date(value_from_db);)。如果您查看原型方法,您可以了解如何从对象中获取各种日期或时间。
    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2014-03-03
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2014-12-26
    相关资源
    最近更新 更多