Сайт с node js и express / e js не всегда загружает изображения - PullRequest
1 голос
/ 27 мая 2020

Я создал веб-сайт, который в основном использует Nodejs для получения изображения и после этого отправляет его на e js для отображения на странице, иногда изображение появляется, а иногда кажется, что веб-сайт загружается прежде чем изображение сможет быть загружено узлом. Я оставил два способа, которые попробовал, один - прокомментировал, а другой - последний. Это приложение. js

function retornaImagens(id){
let imagens= {
    assPacUrl: ''
}
/*
if (fs.existsSync(`${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`)) {
    fs.readFile(
        `${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`, 'base64',
        (err, base64Image) => {
            if (err) {
                console.log(err)
            } else {
                imagens.assPacUrl = `data:image/png;base64, ${base64Image}`
            }
        }
    )
}

*/

fs.access(`${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`,(err)=>{
    if(err){}else{
        fs.readFile(
            `${__dirname}\\arquivos\\consultas\\${id}\\assPac.png`, 'base64',
            (err, base64Image) => {
                if (err) {
                    console.log(err)
                } else {
                    imagens.assPacUrl = `data:image/png;base64, ${base64Image}`
                }
            }
        )
    }
})

return imagens;
}

app.get('/consultas/:id/termo',(req,res)=>{
    var imagens = retornaImagens(req.params.id);

    Consulta.findOne({link:`/consultas/${req.params.id}/login`}).populate('medico paciente').exec((err,consulta)=>{
        if(err){
            console.log(err)
        }else{
            console.log(imagens)
            res.render('consulta/termo',{consulta:consulta,id:req.params.id,imagens})
        }
    })
})

Это файл e js

<img src="<%= imagens.assPacUrl %>">

Если у вас есть советы, как сделать код чище и потреблять меньше памяти, пришлите мне .

1 Ответ

0 голосов
/ 05 июня 2020

Проблема была во времени загрузки, загрузка изображения занимала больше времени, поэтому программа продолжила работу и отобразила веб-сайт пустым, добавив settimeOut.

function enviaTermo(data){
        Consulta.findOne({link:data.link}).populate('medico paciente').exec((err, consulta) => {
            if (err) {
                console.log(err)
            } else {
                console.log(imagens)
                io.to(consulta._id).emit('termo', { consulta: consulta, imagens: imagens })
            }
        })
    }

    setTimeout(() => {
        enviaTermo(data)
    }, 450);
...