【发布时间】:2020-11-16 22:05:43
【问题描述】:
我有表User、Assignment、FavoriteAssignment。 User 可以创建多个Assignments,将只分配给他,即one to many associaton。
但是许多Users 可以将许多Assignments 添加到他们的收藏夹中,即many to many 关联到FavoriteAssignment 表。
如何添加User 创建的作业或他最喜欢的作业?我的意思是在使用 sequelize 制作包含时我应该如何在关联之间切换?
用户的关联:
class User extends Model {
static associate(models) {
User.hasMany(models.Assignment, { foreignKey: 'authorTelegramId'});
User.belongsToMany(models.Assignment, { through: 'FavoriteAssignments', foreignKey: 'telegramId'});
}
};
作业的关联:
class Assignment extends Model {
static associate(models) {
Assignment.belongsTo(models.User, {foreignKey: 'authorTelegramId'});
Assignment.belongsToMany(models.User, {through: 'FavoriteAssignments', foreignKey: 'assignmentId'});
}
};
FavoriteAssignment 的关联:
class FavoriteAssignment extends Model {
static associate(models) {
FavoriteAssignment.belongsTo(models.User, {foreignKey: 'telegramId'});
FavoriteAssignment.belongsTo(models.Assignment, {foreignKey: 'assignmentId'});
}
};
我来这个问题,因为当我这样做时:
const result = await db.User.findAll({
include: [{
model: db.Assignment
}]
});
它会获取所有User 最喜欢的作业,因为belongsToMany 是最后定义的!
如果我评论User.belongsToMany(models.Assignment, { through: 'FavoriteAssignments', foreignKey: 'telegramId'}); 行,那么它将获取所有User 创建的分配(one to many 关联)。
如果我有多个关联,我如何选择要使用的关联?
【问题讨论】:
标签: javascript postgresql sequelize.js many-to-many one-to-many