嗯,我正在用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)很好,但是给我这个错误,我不知道该怎么办。
@Payload()
返回整个有效负载对象,而不仅仅是其中的一部分,因此您只需要一次@Payload() payload: { idUsuario: string; idUsuarioPropio: string; dados: atualizaEspecificoDTO }
,然后就可以访问payload.idUsuario
、payload.idUsuarioPropio
等