Model discovery should populate `jsonSchema.maxLength` alongside `length` to support strict-mode validation
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- node.js, typescript
Piste de recherche
Start by locating LoopBack's model discovery code and the tests for discovered string column metadata; the issue does not name specific files. Trace where the existing length property is populated and check how schema validation reads jsonSchema.maxLength. Update discovery so both values are represented, then verify tests cover overlong strings being rejected before database insertion.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When discovering models from a database (e.g., MySQL), column length is represented by length property:
@property({
type: 'string',
length: 100,
})
name: string;
However, the validation layer does not evaluate the top-level length property. This causes issues depending on the database SQL mode:
Non-strict mode: Strings exceeding the limit are silently truncated by the database without any application-level error.
Strict mode: Instead of a clean validation error handled by LoopBack, the app will return an Internal Server Error.
Expected Behavior:
Model discovery should populate both the length property (for schema metadata) and set jsonSchema.maxLength for application-level validation (when the database is in strict mode). This allows LoopBack's schema validation to catch length violations and return proper validation errors before hitting a strict-mode database.
Proposed Solution:
Update model discovery to ensure that discovered string column lengths populate jsonSchema.maxLength while keeping the existing length property intact.
@property({
type: 'string',
jsonSchema: {
maxLength: 100,
},
length: 100,
})
name: string;
- Langage dominant
- TypeScript
- Étoiles
- 5.1k
- Forks
- 1.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 47
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de loopbackio/loopback-next
-
Avoid constructor source scanning for classes without a base class in @loopback/contextPeut-être pris @zuhairkhalid229 l’a pris il y a 2 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
loopbackio/loopback-next#11878 ·
Les mainteneurs répondent en général sous 1 jour
-
Docs good first issue help wanted
Difficulté 1/5 1-3 heures Accessibilité débutants 68/100
loopbackio/loopback-next#683 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
loopbackio/loopback-next#11726 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
loopbackio/loopback-next#11500 · 1 commentaire · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
@param.array throws INVALID_PARAMETER_VALUE:must be string if more than 20 elements are sentOuvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
loopbackio/loopback-next#11412 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de loopbackio/loopback-next
Issues similaires
-
content triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
tensorflow/tfjs#8754 ·
-
tool-submission
Difficulté 1/5 Moins d'une heure Accessibilité débutants 83/100
BraveOPotato/NoSignups#2348 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
code-yeongyu/oh-my-openagent#12784 ·
Les mainteneurs répondent en général sous 1 jour
-
external-issue to-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 71/100
Les mainteneurs répondent en général sous 1 jour