Maison > base de données > tutoriel mysql > le corps du texte

Comment effectuer des requêtes de jointure avec Sequelize sur Node.js ?

Patricia Arquette
Libérer: 2024-11-21 18:29:10
original
633 Les gens l'ont consulté

How to Perform Join Queries with Sequelize on Node.js?

Joindre des requêtes avec Sequelize sur Node.js

Problème :
Lors de l'utilisation de l'ORM Sequelize, comment pouvons-nous effectuer des requêtes de jointure pour récupérer les données des tables associées ? En particulier, comment pouvons-nous récupérer les publications ainsi que les informations utilisateur associées ?

Solution :

1. Jointure interne :

Pour effectuer une jointure interne, nous spécifions l'option d'inclusion lors de la requête d'un modèle. Cette option nous permet de spécifier le modèle associé auquel nous souhaitons nous joindre. Par défaut, Sequelize effectue des jointures externes gauches, nous devons donc définir l'option requise sur true pour une jointure interne.

Par exemple, pour récupérer toutes les publications ainsi que leurs informations utilisateur associées, nous pouvons utiliser la requête suivante :

Posts.findAll({
  include: [{
    model: User,
    required: true
  }]
}).then(posts => {
  // Process and return the posts along with the user information.
});
Copier après la connexion

2. Jointure externe gauche :

Pour effectuer une jointure externe gauche, nous omettons l'option requise ou la définissons sur false dans l'option d'inclusion. Cela nous permettra de récupérer toutes les publications, y compris celles qui n'ont pas d'utilisateur associé.

Par exemple :

Posts.findAll({
  include: [{
    model: User,
    required: false
  }]
}).then(posts => {
  // Process and return the posts, including those without user information.
});
Copier après la connexion

3. Filtrage des résultats de jointure :

Nous pouvons utiliser l'option Where dans l'objet d'inclusion pour filtrer les enregistrements associés. Par exemple, pour récupérer uniquement les publications appartenant à des utilisateurs nés en 1984, nous utiliserions :

Posts.findAll({
  include: [{
    model: User,
    where: {
      year_birth: 1984
    }
  }]
}).then(posts => {
  // Process and return the posts belonging to users born in 1984.
});
Copier après la connexion

4. Conditions de jointure complexes :

Nous pouvons également spécifier des conditions de jointure complexes en utilisant l'option Where. Par exemple, pour récupérer les publications portant le nom « Sunshine » qui appartiennent à des utilisateurs nés la même année que la création de la publication, nous utiliserions :

Posts.findAll({
  where: {
    name: "Sunshine"
  },
  include: [{
    model: User,
    where: ["year_birth = post_year"]
  }]
}).then(posts => {
  // Process and return the posts matching the specified conditions.
});
Copier après la connexion

Référence de la documentation :

  • [Modèles : Utilisation](http://docs.sequelizejs.com/en/latest/docs/models-usage/#eager-loading)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal