2
respostas

CreateReadStream não termina de processar

Ao procurar a imagem no createReadStream, o postman simplesmente não para de carregar e não tem retorno. O caminho está certo, o nome do arquivo também, a imagem pesa apenas 28,0 KB, mas simplesmente não encerra o processo

Segue o código do arquivo de Upload

const fs = require('fs')

module.exports = (path, fileName, callBack) => {
    const pathNewFile = `./assets/imagens/${fileName}`
    fs.createReadStream(path)
        .pipe(fs.createWriteStream(pathNewFile))
        .on('finish', () => callBack(pathNewFile))    
}

E o código da classe "PET

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

class Pet {
    adiciona(pet, res) {
        const sql = "INSERT INTO tb_pets (nome, imagem) VALUES ($1, $2)"
        uploadArquivo(pet.imagem, `${pet.nome}.jpg`, (path) =>{
            pet.imagem = path
            conexao.query(sql, Object.values(pet), (erro, resultados) => {     
                if(erro){
                    res.status(400).json(erro)
                }else{
                    res.status(201).json(pet)
                }
            })            
        })
    }
}

module.exports = new Pet() 

Qual o problema?

2 respostas

Se a requisição feita pelo Postman não finaliza, significa que o método res.json não foi executado. Pelo código eu chutaria que o callback do .on('finish') não está sendo executado, mas não sei dizer o motivo. Pra ajudar a depurar, adiciona uns console.log tanto no() => callBack(pathNewFile)quanto antes deconexao.query ...

Resolvi, o problema é que a pasta ./assets/imagens ainda não existia no repositório. Quando criei ela manualmente no repositório, ela funcionou