Maison  >  Article  >  base de données  >  Comment puis-je effectuer différents types de jointures à l'aide de Sequelize dans Node.js ?

Comment puis-je effectuer différents types de jointures à l'aide de Sequelize dans Node.js ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-18 01:55:02924parcourir

How can I perform different types of joins using Sequelize in Node.js?

Rejoindre des requêtes à l'aide de Sequelize sur Node.js

Sequelize est une bibliothèque de mappage objet-relationnel (ORM) pour Node.js qui simplifie la base de données interactions. Il vous permet de définir vos modèles de base de données dans des objets JavaScript et d'effectuer des requêtes en utilisant une syntaxe familière.

Requêtes de jointure

Les requêtes de jointure sont utilisées pour combiner les données de plusieurs tables en fonction de critères communs. Dans Sequelize, vous pouvez effectuer des requêtes de jointure à l'aide de la propriété include dans les méthodes findAll ou findOne.

Jointure interne

Pour effectuer une jointure interne, définissez la propriété requise dans l'option d'inclusion sur true. Cela garantira que seuls les enregistrements avec des valeurs correspondantes dans la table jointe seront renvoyés.

Posts.findAll({
  include: [{
    model: User,
    required: true
   }]
});

Jointure externe gauche

Pour effectuer une jointure externe gauche, définissez les paramètres requis. propriété dans l'option d'inclusion sur false ou laissez-la de côté, car sa valeur par défaut est false. Cela renverra tous les enregistrements de la table principale, même s'il n'y a aucune valeur correspondante dans la table jointe.

Posts.findAll({
  include: [{
    model: User,
    required: false
   }]
});

Clauses Where dans les requêtes de jointure

Vous pouvez spécifiez également une clause Where dans l'option d'inclusion pour filtrer les enregistrements de la table jointe. Par exemple, pour rechercher toutes les publications dont l'année de naissance de l'utilisateur est 1984 :

Posts.findAll({
  include: [{
    model: User,
    where: { year_birth: 1984 }
   }]
});

Clauses Where imbriquées

Vous pouvez même utiliser des clauses Where imbriquées pour filtrer sur plusieurs conditions dans la table jointe. Par exemple, pour rechercher toutes les publications dont le nom de l'utilisateur est "Sunshine" et son année de naissance est 1984 :

Posts.findAll({
  where: { name: "Sunshine" },
  include: [{
    model: User,
    where: { year_birth: 1984 }
   }]
});

Requêtes de participation avancées

Pour une participation plus avancée Pour les requêtes, y compris les requêtes un-à-plusieurs, plusieurs-à-plusieurs ou les auto-jointures, reportez-vous à la documentation Sequelize : 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!

Déclaration:
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