Sequelizeは、Node.jsで使用される人気のあるORM(Object-Relational Mapping)です。include
オプションを使用することで、関連するモデルのデータを結合したクエリを実行することができます。以下に、Sequelizeのinclude
を使用したクエリの実行方法と例をいくつか紹介します。
- 単一の関連モデルのデータを結合する例:
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
モデルのデータも結合しています。
- 複数の関連モデルのデータを結合する例:
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
モデルの全てのレコードを取得する際にそれぞれの関連モデルのデータも結合しています。