loopbackio / loopbackio/loopback-datasource-juggler
[BUG] Empty string id is not correctly validated by forceId
Open
Nobody has claimed this yet.
bug
good first issue
help wanted
- Dominant language
- JavaScript
- Stars
- 282
- Forks
- 366
- Avg merge
- 17h 4m
- Merged PRs (30d)
- 10
Description
Description/Steps to reproduce
- define a model with
forceId: true - associate this model to a mongodb data source
- call the API to create a new model with an explicit empty string id
curl -X POST --header "Content-Type: application/json" --header "Accept: application/json" -d "{
\"id\": \"\"
}" "http://localhost:3000/api/foos"
- this call creates a db entry with empty id and returns:
{"id": ""}
Seems related to #1453 (see my comment)
Link to reproduction sandbox
https://github.com/simonbrunel/loopback-sandbox/tree/bug/empty-id-mongodb
Expected result
{
"error": {
"name": "ValidationError",
"status": 422,
"message": "The `foo` instance is not valid. Details : `id` can't be set (value: \"\").",
"statusCode": 422,
"details": {
"context": "foo",
"codes": {
"id": [
"absence"
]
},
"messages": {
"id": [
"can't be set"
]
}
}
}
}
Additional information
node v6.11.3, Windows 10 64bit
npm ls --prod --depth 0 | grep loopback
loopback-sandbox@1.0.0
+-- loopback@2.39.0
+-- loopback-boot@2.27.0
+-- loopback-component-explorer@2.7.0
+-- loopback-datasource-juggler@2.55.3
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue using the linked loopback-sandbox branch with a model configured with forceId: true and a MongoDB data source. Trace the API create path and forceId validation for an explicit empty id; done means the request is rejected with the documented 422 ValidationError instead of creating a database entry.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, mongodb, node.js
- Domain
- backend, database
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100