亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Sequelize 中切換關聯(同時進行一對多和多對多)

在 Sequelize 中切換關聯(同時進行一對多和多對多)

慕無忌1623718 2023-08-05 20:59:51
我有桌子User,,Assignment??梢詣摻ê芏鄠€s,這些s只會分配給他,即association。但是很多s可以添加很多s到自己的收藏夾中,即通過表格關聯。FavoriteAssignmentUserAssignmentone to manyUserAssignmentmany to manyFavoriteAssignment我如何才能包含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'});    }  };FavouriteAssignment 的關聯:  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關聯)。如果我有多個關聯,如何選擇要使用的關聯?
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

基本上我必須這樣命名關聯:


  User.hasMany(models.Assignment, { foreignKey: 'authorTelegramId', as: 'assignments'});

  User.belongsToMany(models.Assignment, { through: 'FavoriteAssignments', foreignKey: 'telegramId', as: 'favoriteAssignments'});

然后調用它:


const result = await db.User.findAll({

    include: ['assignments']

});

const result1 = await db.User.findAll({

    include: ['favoriteAssignments']

});


查看完整回答
反對 回復 2023-08-05
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號