【问题标题】:Invalid value exception when calling findOne() with "where" option in Seqelize在 Sequelize 中使用“where”选项调用 findOne() 时出现无效值异常
【发布时间】:2021-03-21 16:18:07
【问题描述】:

项目详情
使用带有用于 ORM 和 Postgres 的 Sequelize 库的 NestJs 框架作为数据库

代码详情
我有一个管道类,它的作用类似于 validator,用于请求正文中电话号码的唯一性,它试图获取与提供的电话号码相对应的用户记录 喜欢这条指令:

  constructor(
    @InjectModel(User)
    private readonly userModel: typeof User
  ) {}

    const user = await this.userModel.findOne({
      where: { phone }
    });

问题
执行验证器时,我在控制台中收到此错误:

[ExceptionsHandler] 无效值 { phone: '+somePhoneNumber' }


sequelize 库有一个使用 findOne() 方法的示例,正​​如这里的问题所述。


已编辑
这是用户模型中的电话属性:

  @Column({
    type: DataType.STRING,
    unique: true,
    allowNull: false
  })
  phone: string;

【问题讨论】:

  • 您也应该提供用户模型的代码,这似乎是一个类型问题,我的意思是您可能在用户架构中将电话声明为号码
  • 我已根据您的要求更新了问题

标签: nestjs sequelize-typescript


【解决方案1】:

传递给where子句的对象实际上是{phone: '+somePhoneNumber'}形状的对象,它是无效的,应该是

const user = await this.userModel.findOne({
  where: { phone: data.phone }
});

data 是传递给管道转换函数的数据,在我的例子中,对于 nestjs 开发人员来说,它是当前端点的 DTO。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多