uuid 类型的输入语法无效

问题描述 投票:0回答:1

嗯,我正在用rabbitmq制作一个api,其中一部分我希望具有足够威望的用户能够更新随机用户的问题,该用户可以投票或投反对票,从而改变该用户的威望,失去由于投反对票而声望提高,或者由于投赞成票而提高声望,但对我来说,这似乎是正确的,但它返回一个错误:

错误:

invalid input syntax for type uuid: "{"idUsuario":"d7b24127-32d5-4936-a53f-4b5c690de8a1","idUsuarioPropio":"4b4bae21-ecfb-4f10-af23-4a2dc50e34a5","id":"d6259a4f-eb25-494f-bc65-1161107d6b8f","voto":-1,"titulo":"opa eai","pergunta":"e assim e assim opa eai cara como e"}"

我的代码:

我的usuarioPrestigiadoAtualiza(具有足够声望更新和对用户问题投票或反对票的用户):

async usuarioPrestigiadoAtualiza(idUsuario: string, idUsuarioPropio: string,  dados: atualizaEspecificoDTO){
    const { id, titulo, pergunta, voto } = dados
    const usuario = await this.usuarioMetaRepository.findOne({where: {id: idUsuario}})
    if(usuario === null){
      throw new NotFoundException('Usuario Prestigiado nao existe')
    }
    const usuario2 = await this.usuarioMetaRepository.findOne({where: {id: idUsuarioPropio}})
    if(usuario2 === null){
      throw new NotFoundException('Usuario Propio nao existe')
    }
    if(usuario2.pergunta.id !== id){
      throw new UnauthorizedException('Usuario Propio nao possui essa pergunta')
    }
    const perguntaAchada = await this.perguntaRepository.findOne({where: {id}})
    if(perguntaAchada === null){
      throw new NotFoundException('Pergunta nao existe')
    }
    const perguntaEntidade = new PerguntaEntidade()

    perguntaEntidade.id = id
    perguntaEntidade.titulo = titulo
    perguntaEntidade.pergunta = pergunta
    perguntaEntidade.voto = voto
    

    if(usuario.prestigio < 100){
      throw new UnauthorizedException(`Usuario: ${usuario.nome} nao possui prestigio suficiente!`)
    }
    if(voto === -1){
      usuario2.prestigio - 5
      usuario2.voteForce - 2
    }
    if(voto > 1){
      for(let i = 0; i < 100 ; i++){
        if(usuario2.pergunta.voto + 1){
          usuario2.prestigio + 4
          usuario2.voteForce + 1
        }
      }
    }
    if(usuario.voteForce > 30){
      voto * 2
    }
    if(usuario.voteForce > 60){
      voto * 3
    }
    if(usuario.voteForce >= 100){
      voto * 4
    }
    if(usuario2.prestigio > 100){
      usuario2.prestigio === 100
    }
    if(voto === -10){
      return await this.perguntaRepository.remove(perguntaAchada)
    }

    const perguntaMudadaPorPrestigiado = await this.perguntaRepository.save(perguntaEntidade)
    return perguntaMudadaPorPrestigiado

  }

我的控制器:

@MessagePattern({ cmd: 'put-perguntaPrestigio'})
  async enviarPerguntaAvaliada(@Ctx() contexto: RmqContext, @Payload() id: string, @Payload() id2: string,  @Payload() dados: atualizaEspecificoDTO){
    const channel = contexto.getChannelRef()
    const message = contexto.getMessage()
    channel.ack(message)

    return this.perguntaService.usuarioPrestigiadoAtualiza(id, id2, dados)

我的API网关控制器:

@Put('usuarioM/:id1/:id2/:id3')
  async perguntaAtualizaPorPrestigiado(@Param('id1') idUsuario: string, @Param('id2') idUsuarioPropio: string, @Param('id3') id: string,  @Body() data: atualizaEspecificoDTO) {
    return this.authServico.send(
      {
        cmd: 'put-perguntaPrestigio'
      }, {idUsuario, idUsuarioPropio, id, ...data}
    )
  }

我的DTO邮递员

{
    "voto":  -1,
    "titulo": "opa eai",
    "pergunta": "e assim e assim opa eai cara como e"
}

我创建的问题:


export class criarPerguntaDTO  {
  @IsUUID()
  id: string
  @IsNumber()
  voto: number
  @IsNotEmpty()
  @MaxLength(100, {message: 'limite de 100 caracteres de titulo'})
  titulo: string

  @IsNotEmpty()
  pergunta: string

}

正如我所说,当我发送消息时,这个错误又出现在我身上,我希望该用户有足够的权限来更新问题,如果插入 -1,则发出请求的用户将失去权限,反之亦然,如果投票(voto)很好,但是给我这个错误,我不知道该怎么办。

node.js rabbitmq nestjs
1个回答
0
投票

@Payload()
返回整个有效负载对象,而不仅仅是其中的一部分,因此您只需要一次
@Payload() payload: { idUsuario: string; idUsuarioPropio: string;  dados: atualizaEspecificoDTO }
,然后就可以访问
payload.idUsuario
payload.idUsuarioPropio

© www.soinside.com 2019 - 2024. All rights reserved.