GET接口返回null:TypeScript查询isCore=true成员的语法是否正确?
问题排查:GET接口返回null但数据库有符合条件的记录
你的Sequelize查询语法本身是正确的,where: { isCore: true } 能够正确筛选出isCore字段为true的记录。接口返回null大概率是其他环节出了问题,给你几个排查方向:
- 字段名/大小写不匹配:检查数据库表中的实际字段名是否为
isCore。像PostgreSQL这类区分大小写的数据库,如果表字段是iscore或IsCore,而模型里定义的是isCore,就会查不到数据;MySQL默认不区分,但也建议保持模型和数据库字段名一致。 - 模型字段类型错误:确认Member模型中
isCore字段的类型是BOOLEAN。如果模型定义成了STRING,而数据库里存的是布尔值true,类型不匹配会导致查询无结果。 - 数据库连接错误:检查服务是否连接到了正确的数据库实例,别不小心连到测试库或者其他环境的空库了。
- 直接验证SQL语句:在数据库客户端执行原生SQL:
SELECT * FROM members WHERE isCore = true;(注意表名是否和模型对应,Sequelize默认会把模型名转成复数作为表名,比如Member对应members),看是否能查到数据。 - 开启SQL日志调试:在查询里临时添加
logging配置,查看Sequelize实际生成的SQL语句,确认和预期一致:
router.get('/coreMem', async(req, res)=>{ try { const core_member_details = await Member.findAll({ where:{ isCore: true }, logging: console.log // 打印执行的SQL }) console.log('查询结果:', core_member_details); // 控制台确认查询结果是否真为空 res.status(200).json(core_member_details); } catch (err) { logger.error(`${err}`); res.status(500).send('Internal Server/Database Error!'); } });
内容的提问来源于stack exchange,提问作者aditya garg
相关产品推荐
相关产品推荐

