Loopback - 使用MongoDB中的自定义String ID的GET模型

时间:2015-06-04 04:29:12

标签: mongodb model loopbackjs database

我正在开发一个带有环回的API,一切正常,直到我决定在数据库中更改我的文档的ID。现在我不想让它们自动生成。

现在我自己设置了Id。每当我点击此端点时,我都会收到“未知ID”404:GET properties/{id}

如何使用loopback和mongodb的自定义ID?

每当我点击此端点时:http://localhost:5000/api/properties/20020705171616489678000000 我收到这个错误:

{
  "error": {
    "name": "Error",
    "status": 404,
    "message": "Unknown \"Property\" id \"20020705171616489678000000\".",
    "statusCode": 404,
    "code": "MODEL_NOT_FOUND"
  }
}

这是我的model.json,以防万一...

{
  "name": "Property",
  "plural": "properties",
  "base": "PersistedModel",
  "idInjection": false,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "id": {"id": true, "type": "string", "generated": false},
    "photos": {
      "type": [
        "string"
      ]
    },
    "propertyType": {
      "type": "string",
      "required": true
    },
    "internalId": {
      "type": "string",
      "required": true
    },
    "flexCode": {
      "type": "string",
      "required": true
    }

  },
  "validations": [],
  "relations": {},
  "acls": [],
  "methods": []
}

1 个答案:

答案 0 :(得分:1)

当我使用带有文本ID字段的较小数字的PostGreSQL数据库设置尝试时,您的模型设置(带有idInjection: truefalse)确实有效。

运行带有DEBUG=loopback:connector:* node .的Loopback应用程序输出正在终端中运行的数据库查询 - 我尝试使用您正在尝试的id值并且参数值为[2.002070517161649e+25],因此数字的大小是问题。

你可以尝试将它作为Loopback中的一个bug来提升,但JS在处理大数字时非常糟糕,所以你最好不要使用如此大的数字作为标识符。

如果ID是超过16个字符的字母数字字符串,它确实有效,因此可能有一个解决方法(使用ObjectId?),具体取决于您要实现的目标。