在sequelize中,可以通过使用belongsTo
关联来将两个相同的外键字段添加到单个模型中。
具体步骤如下:
User
,它有一个外键字段createdBy
和updatedBy
,分别表示创建者和更新者。const User = sequelize.define('User', {
// 其他字段...
createdBy: {
type: DataTypes.INTEGER,
allowNull: false
},
updatedBy: {
type: DataTypes.INTEGER,
allowNull: false
}
});
Post
,它有一个外键字段createdBy
和updatedBy
,分别表示创建者和更新者。const Post = sequelize.define('Post', {
// 其他字段...
createdBy: {
type: DataTypes.INTEGER,
allowNull: false
},
updatedBy: {
type: DataTypes.INTEGER,
allowNull: false
}
});
belongsTo
关联方法将两个模型关联起来,并指定外键字段。Post.belongsTo(User, { foreignKey: 'createdBy', as: 'createdByUser' });
Post.belongsTo(User, { foreignKey: 'updatedBy', as: 'updatedByUser' });
在上面的代码中,我们使用belongsTo
方法将Post
模型与User
模型关联起来。foreignKey
选项指定外键字段,as
选项指定关联模型的别名。
Post
模型来访问关联的User
模型。const posts = await Post.findAll({
include: [
{ model: User, as: 'createdByUser' },
{ model: User, as: 'updatedByUser' }
]
});
posts.forEach(post => {
console.log(post.createdByUser);
console.log(post.updatedByUser);
});
在上面的代码中,我们使用include
选项来指定要关联的模型。as
选项指定了之前定义的别名。
这样,我们就可以在sequelize中将两个相同的外键字段添加到单个模型中,并通过查询来访问关联的模型。
推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。
腾讯云数据库MySQL产品介绍链接地址:https://cloud.tencent.com/product/cdb
腾讯云云服务器CVM产品介绍链接地址:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云