Sequelizeのinclude


Sequelizeは、Node.jsで使用される人気のあるORM(Object-Relational Mapping)です。includeオプションを使用することで、関連するモデルのデータを結合したクエリを実行することができます。以下に、Sequelizeのincludeを使用したクエリの実行方法と例をいくつか紹介します。

  1. 単一の関連モデルのデータを結合する例:
const Post = sequelize.define('Post', {
  title: DataTypes.STRING,
  content: DataTypes.TEXT
});
const Tag = sequelize.define('Tag', {
  name: DataTypes.STRING
});
Post.hasMany(Tag);
Post.findAll({
  include: Tag
}).then(posts => {
  console.log(posts);
}).catch(error => {
  console.log(error);
});

上記の例では、PostモデルとTagモデルの関係を定義し、Postモデルの全てのレコードを取得する際にTagモデルのデータも結合しています。

  1. 複数の関連モデルのデータを結合する例:
const User = sequelize.define('User', {
  name: DataTypes.STRING
});
const Post = sequelize.define('Post', {
  title: DataTypes.STRING,
  content: DataTypes.TEXT
});
const Comment = sequelize.define('Comment', {
  text: DataTypes.TEXT
});
User.hasMany(Post);
Post.belongsTo(User);
Post.hasMany(Comment);
Comment.belongsTo(Post);
User.findAll({
  include: [
    {
      model: Post,
      include: Comment
    }
  ]
}).then(users => {
  console.log(users);
}).catch(error => {
  console.log(error);
});

上記の例では、UserモデルとPostモデル、PostモデルとCommentモデルの関係を定義し、Userモデルの全てのレコードを取得する際にそれぞれの関連モデルのデータも結合しています。