Sequelize报错:Item模型不存在'sent'/'received'关联,求解决方法
问题排查与解决方案
你的问题出在Item模型的belongsTo关联未指定别名和对应外键,导致Sequelize无法识别你在查询中使用的sent/received关联别名。
正确的关联配置
需要为Item的两个belongsTo关联分别指定as别名和对应的foreignKey,与User侧的hasMany关联一一对应:
// User -> Item:用户收到的物品(hasMany对应Item的received外键) User.hasMany(Item, { foreignKey: 'received', as: 'receivedItems' }); // Item -> User:物品的接收方用户 Item.belongsTo(User, { foreignKey: 'received', as: 'receivedUser' }); // User -> Item:用户发送的物品(hasMany对应Item的sent外键) User.hasMany(Item, { foreignKey: 'sent', as: 'sentItems' }); // Item -> User:物品的发送方用户 Item.belongsTo(User, { foreignKey: 'sent', as: 'sentUser' });
正确的查询写法
关联配置完成后,查询时使用Item侧定义的关联别名(sentUser/receivedUser):
let itemsList = await Item.findAndCountAll({ include: [ { association: 'sentUser' }, // 关联发送方用户 { association: 'receivedUser' } // 关联接收方用户(如果需要) ] });
错误原因说明
你之前的代码中,Item.belongsTo(User)没有指定as和foreignKey,Sequelize会默认创建一个名为user的关联,而不会生成sent或received的关联别名。因此查询时使用这两个别名会提示“关联不存在”。
内容的提问来源于stack exchange,提问作者vbpkzxczhbdgwrr
相关产品推荐
相关产品推荐

