Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

So entra como tipo invalido

arquivo uploadDeArquivos.js

const fs = require('fs')
const path = require('path')



module.exports = (caminho, nomeDoArquivo, callbackImagemCriada) =>

{
    const tiposValidos = ['jpg', 'png', 'jpeg']
    const tipo = path.extname(caminho)
    const tipoEhValido = tiposValidos.indexOf(tipo.substring(1)) !==1

    if(tipoEhValido){
        const erro = 'Tipo é inválido'
        console.log('Erro! Tipo inválido')
        callbackImagemCriada(erro)
    } else {
        const novoCaminho = `./assets/imagens/${nomeDoArquivo}${tipo}`

        fs.createReadStream(caminho)
        .pipe(fs.createWriteStream(novoCaminho))
        .on('finish', () => callbackImagemCriada(false, novoCaminho))
    }
}
arquivo pets.js

const conexao = require('../infraestrutura/conexao')
const uploadDeArquivo = require('../arquivos/uploadDeArquivos')

class Pet {

    adiciona(pet, res) {

        const query = 'INSERT INTO Pets SET ?'

//
        uploadDeArquivo(pet.imagem, pet.nome, (erro, novoCaminho) => {

            if(erro){

                res.status(400).json({erro})

            } else{

                const novoPet = {nome: pet.nome, imagem: novoCaminho}

            conexao.query(query, novoPet, erro => {


                if(erro) {
                    console.log(erro)
                    res.status(400).json(erro)
                } else {
                    res.status(200).json(novoPet)

                }

            }) 

            }



        })
}

} module.exports = new Pet()

4 respostas
solução!

Oi, Armando, tudo bem?

O indexOf é um método que retorna se um elemento ou vários podem ser encontrados num array, se sim ele retorna o valor procurado, caso não, retorna -1.

Na sua const tipoEhValido está como !==1 ou seja, se for diferente 1, é true. E não é o que queremos, mas sim, o oposto, que é !== -1 se for diferente de -1 ele é do tipo válido. Ai faz a verificação no bloco if...else.

Faz o teste e me fala se deu certo!

Boa tarde, fiz o teste e mesmo assim continuou apresentando a mensagem, eu fiz o download do projeto final disponibilizado, e rodei a partir dele, e continou apresentando a mensagem, pode ser o jeito que eu estou passando os dados pelo postman? estou deixando o link do GIT com o código para se puderem ver se tem algo errado que eu não vi.

Obrigado sempre pela ajuda.

https://github.com/ArmandoGomes87/-NodeJS-Streaming

estou deixando também o print com a forma que estou passando os dados no postman

https://imgur.com/a/hD1bsuF

Oi, Armando, tudo bem?

Pelo seu print entendi que você passou os dados da tabela atendimentos e não, da tabela pet, onde são passados o nome do pet e a foto do pet, onde são validados os tipos. Você fez o teste para enviar dados para a tabela pet depois que sugeri a modificação?

Bom dia, tudo bem? perdão eu acabei colocando duas coisas no mesmo post, então por partes, sim colocar o -1 funcionou sim e as imagens estão subindo normalmente quando feito pelo postman, meu outro problema está sendo agora ao tentar colocar um novo atendimento, que ele só apresenta mensagem de "cliente deve ter pelo menos cinco caracteres"

mas obrigado novamente pela ajuda