loopbackio / loopbackio/loopback-next
@property.array ignores json schema definition
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 5.1k
- Fork
- 1.1k
- Merge medio
- 2g 21h
- PR unite (30g)
- 27
Descrizione
Describe the bug
I was attempting to use the property array decorator alongside the jsonschema definition to ensure at least one item existed in the array at request time via validation within @requestBody
However when using the @property.array decorator it seems to just drop all the jsonSchema fields and ignore them
I've made a repro here.
https://codesandbox.io/p/sandbox/infallible-scott-64xtwg?welcome=true
Run this request
curl -X 'POST' \
'https://64xtwg-3000.csb.app/ping' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"subModel": [
{
"childProperty": [
]
}
]
}'
This line here https://github.com/loopbackio/loopback-next/blob/master/packages/repository-json-schema/src/build-schema.ts#L269C46-L269C46 seems to be the culprit. If i change that to result = Object.assign({}, meta.jsonSchema, { type: 'array', items: propDef }) it appears to work as expected (throw a 422 error)
Logs
No response
Additional information
No response
Reproduction
https://codesandbox.io/p/sandbox/infallible-scott-64xtwg?welcome=true
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da packages/repository-json-schema/src/build-schema.ts intorno alla riga 269 e riproduci il comportamento con il CodeSandbox collegato o la richiesta curl. Verifica come @property.array combina i propri metadati dell'array con la definizione di jsonSchema; il lavoro è completo quando lo schema conserva la definizione e la richiesta con un childProperty vuoto produce un errore di validazione 422.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- api
- Tipo di issue
- Bug
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 48/100