loopbackio / loopbackio/loopback-next

@property.array ignores json schema definition

Ouverte
#9,807 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
Langage dominant
TypeScript
Étoiles
5.1k
Forks
1.1k
Merge moyen
2 j 21 h
PR mergées (30 j)
27

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans packages/repository-json-schema/src/build-schema.ts vers la ligne 269 et reproduisez le comportement avec le CodeSandbox lié ou la requête curl. Vérifiez comment @property.array combine ses métadonnées de tableau avec la définition de jsonSchema ; le travail est terminé lorsque le schéma conserve la définition et que la requête avec un childProperty vide produit une erreur de validation 422.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
api
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.