loopbackio / loopbackio/loopback-next

Empty relation should return empty array

Ouverte
#8,910 0 commentaires 0 réactions 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

Hi,

I'm migrating a project from loopback 3 to loopback 4 and I found inconsistencies between the two regarding relations.

I am querying a model which have a HasMany relation on another model like this:

```
export class User extends Entity {
...

@hasMany(() => Order)
orders: Order[];

...
}
```

The query looks like this:
`/users?filter={"include": ["orders"]}`

In the answer, I got an `orders` property for `users` that have orders **but** no `orders` property for users that don't. Here is an API response for example:
```
[
...
{
"id": "__",
"email": "admin@example.com",
},
{
"id": "__",
"email": "support@example.com",
"orders": [
{...}
]
},
...
]
```

Is this an intended behavior in loopback 4 ? I find this much harder to deal with undefined property instead of empty array when querying model with relation.

Best regards

### Logs

_No response_

### Additional information

_No response_

### Reproduction

https://codesandbox.io/s/falling-frost-qn03xh?file=/src/models/user.model.ts

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 par la reproduction CodeSandbox liée dans l’issue et examinez comment une relation HasMany incluse est représentée dans la réponse de users. Comparez users avec et sans orders, puis suivez le traitement de includes afin de déterminer la forme attendue de la réponse. Le travail est terminé lorsque le comportement est défini et couvert à la fois pour les relations renseignées et les relations vides.

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

Évaluation

Stack technique
typescript
Domaine
api, backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

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