Sequelize关联查询返回NULL问题求助:fdID字段未生效
Sequelize关联返回NULL的问题修复
核心问题:关联类型与方向错误
你当前的反向关联用错了方法,Fdo.hasOne(User) 会让Sequelize尝试用User表的fdID字段关联Fdo的id,但实际逻辑应该是Fdo表的fdID存储User的id,此时从属方(Fdo)应该用belongsTo来定义关联,而非hasOne。
修正后的关联代码
// User 拥有一个 Fdo(Fdo表的fdID对应User的id) User.hasOne(Fdo, { foreignKey: "fdID", // Fdo表中存储User主键的字段 targetKey: "id", // User表的主键字段 as: "fdo", }); // Fdo 属于一个 User(修正关联类型为belongsTo) Fdo.belongsTo(User, { foreignKey: "fdID", // Fdo表中存储User主键的字段 targetKey: "id", // User表的主键字段 as: "user", });
额外验证项
- 确认数据库中,目标Fdo的
fdID字段值,确实存在于User表的id字段中(必须有匹配的关联数据) - 可以开启Sequelize的日志功能(添加
logging: console.log到配置),查看生成的SQL语句,检查关联查询的WHERE条件是否符合预期 - 若需强制返回关联数据(内连接),可开启
required: true
测试查询代码
关联修正后,原查询逻辑可正常运行:
let text = await Fdo.findOne({ where: { id: req.body['id'] }, include: [ { association: "user", // required: true, // 如需强制关联可取消注释 }, ] }) console.log(text.user);
内容的提问来源于stack exchange,提问作者desp200
相关产品推荐
相关产品推荐

