环回 - 使用来自 MongoDB 的自定义字符串 ID 获取模型

Loopback - GET model using custom String ID from MongoDB

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

现在我正在自己设置 Id。每当我到达此端点时,我都会收到 "Unknown id" 404:GET properties/{id}

如何将自定义 ID 与环回和 mongodb 一起使用?

每当我到达这个终点时: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": []
}

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

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

您可以尝试将其作为 Loopback 中的错误提出,但 JS 在处理大数字时很糟糕,因此您最好不要使用如此大的数字作为标识符。

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