2
respostas

TypeError: "value" argument must not be a number

Quando envio tento enviar o seguinte JSON para o banco, recebo o status 200. Porém, nada é gravado no banco e no console da aplicação é exibida mensagem de erro.

Subi meu código para o Github, para ficar mais fácil a simulação, caso necessário: https://github.com/marcelosdm/payfast-api

JSON enviado:

{ "pay_method":"payfast", "value":10.98, "currency":"BRL", "description":"criando um pagamento" }

Erro recebido:

` D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\protocol\Parser.js:80 throw err; // Rethrow non-MySQL errors ^

TypeError: "value" argument must not be a number at Function.Buffer.from (buffer.js:186:11) at Object.Auth.token (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\protocol\Auth.js:29:29) at Handshake.sendCredentials (D:\Practice\NodeJS-practice\Alura\payfast\nodemodules\mysql\lib\protocol\sequences\Handshake.js:99:14) at Handshake.HandshakeInitializationPacket (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\protocol\sequences\Handshake.js:81:10) at Protocol.parsePacket (D:\Practice\NodeJS-practice\Alura\payfast\nodemodules\mysql\lib\protocol\Protocol.js:278:23) at Parser.write (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\protocol\Parser.js:76:12) at Protocol.write (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\protocol\Protocol.js:38:16) at Socket. (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\Connection.js:91:28) at Socket. (D:\Practice\NodeJS-practice\Alura\payfast\node_modules\mysql\lib\Connection.js:502:10) at emitOne (events.js:116:13) [nodemon] app crashed - waiting for file changes before starting... `

2 respostas

Olá @Marcelo, na linha "75" não é necessário possuir o "res.send(payment)

   res.status(201).json(payment);
      }
    });

    res.send(payment); **
  });

Pois ele será retornado diretamente do res.status(201).json(payment).

Efetue o teste e me informe, caso ainda persista verifique se o value no banco mysql esta com o tipo de float

Aguardo.

Olá Gustavo,

Primeiramente, muito obrigado pelo auxílio!

Bem, infelizmente ainda não resolveu.

Verifiquei no banco MySQL e na verdade o campo está como tipo DECIMAL(10,2) - conforme o professor faz no curso.

Mesmo assim, tentei alterar a linha 44 para isDecimal(), mas o erro recebido no console continua sendo o mesmo:

TypeError: "value" argument must not be a number