loopbackio / loopbackio/loopback-next

Empty relation should return empty array

Offen
#8,910 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
TypeScript
Sterne
5.1k
Forks
1.1k
Ø Merge
2 T. 21 Std.
Gemergte PRs (30 T.)
27

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der im Issue verknüpften CodeSandbox-Reproduktion und untersuche, wie eine eingeschlossene HasMany-Relation in der users-Antwort dargestellt wird. Vergleiche users mit und ohne orders und verfolge anschließend die Verarbeitung von includes, um die erwartete Antwortstruktur zu bestimmen. Abgeschlossen ist die Aufgabe, wenn das Verhalten definiert und sowohl für befüllte als auch für leere Relationen abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.