【问题标题】:Loopback Api Explorer Create Error: Invalid DateLoopback Api Explorer 创建错误:无效日期
【发布时间】:2018-05-11 07:32:03
【问题描述】:

我正在使用 loopback 的 API explorer 来创建具有以下参数的模型:

{
  "name": "string",
  "last_name": "string",
  "phone": 0,
  "is_invited": true,
  "realm": "string",
  "username": "string",
  "credentials": {},
  "challenges": {},
  "email": "string",
  "emailVerified": true,
  "status": "string",
  "created": "2016-06-03",
  "lastUpdated": "2016-06-03",
  "id": 0
}

但是,服务器总是返回 500 invalid Date 错误:

{
  "error": {
    "name": "Error",
    "status": 500,
    "message": "Invalid date: Invalid Date",
    "stack": "Error: Invalid date: Invalid Date\n    at DateType }
}

这是我的模型供参考。它继承了Loopback的User模型。

{
  "name": "ExeboardUser",
  "base": "User",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    },
    "last_name": {
      "type": "string"
    },
    "phone": {
      "type": "number",
      "required": true
    },
    "is_invited": {
      "type": "boolean",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "boards": {
      "type": "hasMany",
      "model": "Board",
      "foreignKey": "exeboardUserId",
      "through": "ExeboardUserBoard"
    }
  },
  "acls": [
    {
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW",
      "property": "logout"
    }
  ],
  "methods": {

  }
}

谁能告诉我日期有什么问题?我认为它的格式正确,因为它是资源管理器生成的默认参数。

【问题讨论】:

    标签: node.js loopback


    【解决方案1】:

    不知道您是否对答案感兴趣,但我最近开始使用环回并遇到与您相同的错误,服务器接受的日期格式是这样的 2017-01-06T23:58: 10.000Z

    希望对某人有所帮助。

    Ps.:如果模型不要求日期,请不要发送,即使是“null”或“”值,都会抛出500状态错误。

    【讨论】:

      【解决方案2】:

      正确的日期格式是:2017-10-12T10:31:37.925Z

      而如果要添加dateCreated和dateUpdate的字段,则使用date mixinloopback-ds-timestamp-mixin

      使用

      安装 mixin

      npm i loopback-ds-timestamp-mixin --save

      将 mixins 属性添加到您的 server/model-config.json:

      {
      "_meta": {
       "sources": [
         "loopback/common/models",
         "loopback/server/models",
         "../common/models",
         "./models"
       ],
       "mixins": [
         "loopback/common/mixins",
         "../node_modules/loopback-ds-timestamp-mixin",
         "../common/mixins"
       ]}
      }
      

      在你的模型中:

      {
        "name": "ExeboardUser",
        "base": "User",
        "idInjection": true,
        "options": {
          "validateUpsert": true
        },
        "mixins": {
            "TimeStamp" : true
        },
        "properties": {
          "name": {
            "type": "string",
            "required": true
          },
          "last_name": {
            "type": "string"
          },
          "phone": {
            "type": "number",
            "required": true
          },
          "is_invited": {
            "type": "boolean",
            "required": true
          }
        },
        "validations": [],
        "relations": {
          "boards": {
            "type": "hasMany",
            "model": "Board",
            "foreignKey": "exeboardUserId",
            "through": "ExeboardUserBoard"
          }
        },
        "acls": [
          {
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "ALLOW",
            "property": "logout"
          }
        ],
        "methods": {
      
        }
      }
      

      【讨论】:

        【解决方案3】:

        在处理字符串化参数时,您应该在查询过滤器中以简化的扩展 ISO 格式将日期值作为字符串发送。

        这是一个示例,说明如何使用 toISOString 方法以非常简单的方式执行此操作:

        const dataValue = new Date('10 May 2018 19:30 UTC');
        console.log(dataValue.toISOString());
        // output: 2018-05-10T19:30:00.000Z
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-06-04
          • 1970-01-01
          • 1970-01-01
          • 2012-10-05
          • 1970-01-01
          • 1970-01-01
          • 2016-12-09
          相关资源
          最近更新 更多