环回 - 使用来自 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: true
或 false
)在我尝试使用 PostGreSQL 数据库设置(带有用于较小数字的文本 ID 字段)时确实有效。
运行 具有 DEBUG=loopback:connector:* node .
的环回应用程序在终端中输出数据库查询为 运行 - 我尝试使用您正在尝试的 id 值,参数值为 [2.002070517161649e+25]
,所以数字的大小是问题。
您可以尝试将其作为 Loopback 中的错误提出,但 JS 在处理大数字时很糟糕,因此您最好不要使用如此大的数字作为标识符。
如果 ID 是超过 16 个字符的字母数字字符串,它确实有效,因此可能有适合您的解决方法(使用 ObjectId?),具体取决于您要实现的目标。
我正在开发一个带环回的 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: true
或 false
)在我尝试使用 PostGreSQL 数据库设置(带有用于较小数字的文本 ID 字段)时确实有效。
运行 具有 DEBUG=loopback:connector:* node .
的环回应用程序在终端中输出数据库查询为 运行 - 我尝试使用您正在尝试的 id 值,参数值为 [2.002070517161649e+25]
,所以数字的大小是问题。
您可以尝试将其作为 Loopback 中的错误提出,但 JS 在处理大数字时很糟糕,因此您最好不要使用如此大的数字作为标识符。
如果 ID 是超过 16 个字符的字母数字字符串,它确实有效,因此可能有适合您的解决方法(使用 ObjectId?),具体取决于您要实现的目标。