Loopback Api Explorer Create Error: Invalid Date

Loopback Api Explorer Create Error: Invalid Date

我正在使用 API 环回资源管理器创建具有以下参数的模型:

{
  "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 无效日期错误:

{
  "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": {

  }
}

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

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

希望对大家有所帮助。

Ps.: 如果模型不需要日期,甚至不要发送它,即使使用 "null" 或 "" 值,它也会抛出 500 状态错误。

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

并且如果你想添加dateCreated和dateUpdate的字段,那么使用date mixin loopback-ds-timestamp-mixin

使用

安装 mixin

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

将混音 属性 添加到您的 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": {

  }
}

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

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

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