You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sequelize(Postgres)按ID查询用户无返回或报错,求解决方案

问题解决:Sequelize查询用户ID报错或无结果

错误原因

  • 直接把id值传给where选项,不符合Sequelize的语法规范。Sequelize要求where必须是键值对对象来指定查询条件,而非单个原始值,这就是触发“Support for {where: 'raw query'} has been removed.”错误的原因。
  • 若req.body.id未正确获取到值(比如前端传参错误),还会导致查询无返回结果。

修复后的代码

async findOne(req,res) {
    try {
        const {id} = req.body;
        console.log(id);
        // 修正where选项为键值对对象,匹配数据库字段名
        const user = await User.findOne({where: { id }})
        return res.json({user});
    } catch (e) {
        console.log(e.message);
        // 建议给前端返回错误响应,方便排查问题
        return res.status(500).json({error: e.message});
    }
}

router.post('/getOne', userController.findOne);

额外提示

  • 确认req.body.id的类型和数据库中id字段类型一致(比如数据库存整数,前端别传字符串,若Sequelize配置了自动类型转换则无需担心)。
  • 如果是通过URL路径传ID(比如/getOne/123),建议改用req.params.id获取参数,更符合RESTful接口设计习惯。

内容的提问来源于stack exchange,提问作者Andrey Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:25:24