mysql - Sequelize - 通过带有外键的表
问题描述
如果我有一个带有额外列的连接表,该列是第三个表的外键(即选项),是否可以在查询中包含该表中的其他列(即 options.name、options.description ...)?
协会:
let User = sequelize.define('user', {
id: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false,
defaultValue: DataTypes.UUIDV4
}
});
User.associate = models => {
User.belongsToMany(
models.mail_settings,
{
through: 'user_mail_settings',
foreignKey: 'user_id'
}
);
}
let MailSettings = sequelize.define('mail_settings', {
id: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false,
defaultValue: DataTypes.UUIDV4
},
name: {
type: DataTypes.STRING(100)
}
});
MailSettings.associate = (models) => {
MailSettings.belongsToMany(
models.user,
{
through: 'user_mail_settings',
foreignKey: 'mail_settings_id'
}
)
};
var PrivacyOptions = sequelize.define('mail_options', {
id: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false,
defaultValue: DataTypes.UUIDV4
}
});
var UserMailSettings = sequelize.define('user_mail_settings', {
});
UserMailSettings.associate = (models) => {
UserMailSettings.belongsTo(
models.mail_options,
{
foreignKey: 'fk_selection_user_mail_settings',
targetKey: 'id'
}
)
};
我知道我可以通过将其添加到我的用户查询中来获取该外键:
include: [{
model: models.mail_settings,
attributes: ['id', 'name'],
through: {
attributes: ['fk_selection_user_mail_settings']
},
where: {
name: 'some_query_here'
}
}]
但是我如何更进一步并从 mail_options 模型中获取更多列?
解决方案
推荐阅读
- proxy - 旋转代理(STORM,SMART)没有在每个scrapy请求中提供唯一的IP
- typescript - 打字稿:带有剩余只读数组的参数永远不会
- javascript - useState 不适用于对象数组
- ajax - Laravel 将相同产品的添加到购物车按钮添加到购物车,数量 +1
- ruby-on-rails - parse_markdown 和截断
- python - 在 python 中提取 3D 图像补丁时出现大的分配错误
- javascript - 执行函数的值返回一个承诺
- bash - 如何在bash中获得完全限定的目录
- blazor - Blazor:在 IIS 服务器中发布后应用程序崩溃
- c# - AutoMapper.AutoMapperMappingException:.NET CORE 中缺少类型映射配置或不支持的映射