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

Sequelize执行用户查询返回Invalid value错误的原因是什么?

错误原因

你遇到的报错核心是Op操作符的导入方式错误,导致代码中使用的Op.and不是Sequelize预设的合法操作符:
默认从sequelize包导入的默认对象是Sequelize构造函数,而非操作符集合,此时Op.and为无效值,你的where条件实际会被解析为包含无效字段的结构,Sequelize将后续的{ username: 'user' }对象当成字段值做转义处理时就会抛出Invalid value错误。

修复方案

方法1:修正Op的导入语句

将查询代码中的导入行修改为解构导入操作符集合:

// 错误写法
import Op from "sequelize";
// 正确写法
import { Op } from "sequelize";

方法2:简化查询逻辑(可选)

你的查询场景是多条件逻辑与,Sequelize的where对象默认就是逻辑与关系,完全可以省略Op.and的显式声明,代码更简洁也能规避操作符导入错误:

db.models.user
  .findOne({
    where: {
      username: "user",
      password: hashedPwd
    },
  })

额外说明

你当前直接比对hash后的密码的逻辑是可行的,因为password字段的setter仅在写入数据时触发,查询阶段不会影响传入的hash值比对。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:54:01