gpt4 book ai didi

sequelize.js - Sequelize n :m join table 1:m eager loading relationship

转载 作者:行者123 更新时间:2023-12-03 22:42:01 26 4
gpt4 key购买 nike

sequelize 文档中有一个示例如下(我有一个类似的用例)。

 ItemTag = sequelize.define('item_tag', {
tag_id: {
type: DataTypes.INTEGER,
unique: 'item_tag_taggable'
},
taggable: {
type: DataTypes.STRING,
unique: 'item_tag_taggable'
},
taggable_id: {
type: DataTypes.INTEGER,
unique: 'item_tag_taggable',
references: null
}
});
Tag = sequelize.define('tag', {
name: DataTypes.STRING
});

Post.belongsToMany(Tag, {
through: {
model: ItemTag,
unique: false,
scope: {
taggable: 'post'
}
},
foreignKey: 'taggable_id',
constraints: false
});
Tag.belongsToMany(Post, {
through: {
model: ItemTag,
unique: false
},
foreignKey: 'tag_id'
});

现在,假设我必须包含一个额外的关系和表:
ItemTagReaction = sequelize.define('item_tag_reaction', {
reaction_type: {
type: Sequelize.ENUM.apply(Sequelize, reactionTypes),
},
tagResponse: Sequelize.STRING(256),
});

现在,我在这里包含一个额外的关系:
ItemTag.hasMany(ItemTagReaction);

查询 Post 时如何预先加载 ItemTagReaction?
Post.findById(2, {
include: [Tag],
})

上面的 ^^ 有效,但我不知道如何确保 ItemTagReaction 也已加载。如果你包含它,你会得到一个错误,它与 Post 无关。如果您尝试将其嵌套到 Tag 中,则会收到一个错误,指出它们也不相关。

帮助!?

最佳答案

在您的定义中,Post 与 Tag 相关。但是 Post 和 Tag 都与 ItemTagReaction 和 ItemTag 无关。

您必须将 ItemTagReaction 关联到 Post 或 Tag。然后您可以包含它(发布)或嵌套包含它(标签)。

关于sequelize.js - Sequelize n :m join table 1:m eager loading relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37663581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com