loopbackio / loopbackio/loopback-next

Required model property with default value throws error when property not provided in create

Ouverte
#3,058 11 commentaires 2 réactions 1 personne assignée Voir sur GitHub

@aharbis y travaille déjà.

Depuis le 7/6/2019.

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

Description

## Description / Steps to reproduce / Feature proposal

Given a model property that is defined as `required` with a `default` value, trying to create a new model instance and omitting that property from the request yields a 422 error stating the property is missing.

For example, given the following model property definition:

```ts
@property({
type: 'string',
required: true,
default: 'admin',
})
username: string;
```

Trying to create a model instance and omitting the `username` property yields:

```json
{
"error": {
"statusCode": 422,
"name": "UnprocessableEntityError",
"message": "The request body is invalid. See error object `details` property for more info.",
"code": "VALIDATION_FAILED",
"details": [
{
"path": "",
"code": "required",
"message": "should have required property 'username'",
"info": {
"missingProperty": "username"
}
}
]
}
}
```

I've recreated the issue using the `todo` application, and you can view that on my forked feature branch:

https://github.com/aharbis/loopback-next/tree/default-property

I am using Node `v10.15.3`, and based the recreate on an up-to-date fork of `loopback-next`.

## Current Behavior

The `default` value defined for the model property is not utilized, and instead a 422 error is thrown stating the required property is missing.

## Expected Behavior

~If a `required` property has a `default` value, and the given property is not provided in the request to create the model instance, the `default` value should be used.~

Finalized agreement:
LoopBack follow the OpenAPI standard and make no interpretations.
`required` means the user needs to provide the field in the request always, independent of the `default`.

i.e `default: xxx, required: true` shouldn't be set at the same time.

## Accpetance Criteria
- [ ] Update the docs `Models.md`, add explanations and examples
- [ ] Add validation to check if the two fields is set at the runtime

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.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

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