ホームページ >データベース >mysql チュートリアル >Node.js で Sequelize を使用してさまざまなタイプの結合を実行するにはどうすればよいですか?

Node.js で Sequelize を使用してさまざまなタイプの結合を実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-18 01:55:021016ブラウズ

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

Node.js で Sequelize を使用してクエリを結合する

Sequelize は、データベースを簡素化する Node.js のオブジェクト リレーショナル マッピング (ORM) ライブラリです。相互作用。 JavaScript オブジェクトでデータベース モデルを定義し、使い慣れた構文を使用してクエリを実行できます。

結合クエリ

結合クエリは、以下に基づいて複数のテーブルのデータを結合するために使用されます。共通の基準。 Sequelize では、findAll メソッドまたは findOne メソッド内の include プロパティを使用して結合クエリを実行できます。

内部結合

内部結合を実行するには、必須のプロパティをinclude オプションを true に設定します。これにより、結合テーブル内の値が一致するレコードのみが返されるようになります。

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

左外部結合

左外部結合を実行するには、必要なinclude オプションのプロパティを false に設定するか、デフォルトでは false なので省略します。これにより、結合テーブルに一致する値がない場合でも、プライマリ テーブルからすべてのレコードが返されます。

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

結合クエリの Where 句

また、結合テーブルからレコードをフィルター処理するために、 include オプション内で where 句を指定します。たとえば、ユーザーの誕生年が 1984 年であるすべての投稿を検索するには:

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

ネストされた Where 句

ネストされた Where 句を使用して複数の投稿をフィルタリングすることもできます。結合テーブル内の条件。たとえば、ユーザーの名前が「Sunshine」で、生年が 1984 年であるすべての投稿を検索するには:

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

Advanced Join Queries

For more Advanced Join 1 対多、多対多、または自己結合を含むクエリについては、Sequelize のドキュメントを参照してください。 http://docs.sequelizejs.com/en/latest/docs/models-usage/#eager-loading

以上がNode.js で Sequelize を使用してさまざまなタイプの結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。