Abfragen mit Sequelize auf Node.js verbinden
Problem:
Bei Verwendung des Sequelize ORM, wie Können wir Join-Abfragen durchführen, um Daten aus verwandten Tabellen abzurufen? Wie können wir insbesondere Beiträge zusammen mit den zugehörigen Benutzerinformationen abrufen?
Lösung:
1. Inner Join:
Um einen Inner Join durchzuführen, geben wir bei der Abfrage eines Modells die Option „Include“ an. Mit dieser Option können wir das zugehörige Modell angeben, dem wir beitreten möchten. Standardmäßig führt Sequelize linke äußere Verknüpfungen durch, daher müssen wir die erforderliche Option für eine innere Verknüpfung auf „true“ setzen.
Um beispielsweise alle Beiträge zusammen mit den zugehörigen Benutzerinformationen abzurufen, können wir die folgende Abfrage verwenden :
Posts.findAll({ include: [{ model: User, required: true }] }).then(posts => { // Process and return the posts along with the user information. });
2. Left Outer Join:
Um einen Left Outer Join durchzuführen, lassen wir die erforderliche Option weg oder setzen sie in der Option „include“ auf „false“. Dadurch können wir alle Beiträge abrufen, auch solche, denen kein Benutzer zugeordnet ist.
Zum Beispiel:
Posts.findAll({ include: [{ model: User, required: false }] }).then(posts => { // Process and return the posts, including those without user information. });
3. Join-Ergebnisse filtern:
Wir können die Option „Where“ im Include-Objekt verwenden, um die zugehörigen Datensätze zu filtern. Um beispielsweise nur Beiträge abzurufen, die zu Benutzern mit Jahrgang 1984 gehören, würden wir Folgendes verwenden:
Posts.findAll({ include: [{ model: User, where: { year_birth: 1984 } }] }).then(posts => { // Process and return the posts belonging to users born in 1984. });
4. Komplexe Join-Bedingungen:
Mit der Option „Where“ können wir auch komplexe Join-Bedingungen angeben. Um beispielsweise Beiträge mit dem Namen „Sunshine“ abzurufen, die zu Benutzern gehören, die im selben Jahr geboren wurden, in dem der Beitrag erstellt wurde, würden wir Folgendes verwenden:
Posts.findAll({ where: { name: "Sunshine" }, include: [{ model: User, where: ["year_birth = post_year"] }] }).then(posts => { // Process and return the posts matching the specified conditions. });
Dokumentationsreferenz:
Das obige ist der detaillierte Inhalt vonWie führe ich Join-Abfragen mit Sequelize auf Node.js durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!