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

Visualização do BD

Oi! Então... Banco criado, consigo acessar de boa pelo terminal. Servidor funcionando. Contudo, ao carregar no navegador, aparece o que havia criado em HTML em aulas anteriores e não o que tenho no BD. Instalei o MySQL pelo terminal no Linux, criei o BD conforme instruções e tenho acesso à ele. Quando vejo se o servidor está funcionando, tudo bem também. Então, simplesmente não sei! Estou seguindo as aulas, mas sem visualizar no navegador. Aparece no local http://localhost:3000/produtos, exatamente isto:

id nome 1 Livro de NodeJs

Meu código está todo certinho com a aula 12: Isolando a criação da conexão com o banco de dados.

Obrigada.

6 respostas

Fala aí Ana, tudo bem? Bom, precisaria dos códigos para tentar entender o que pode estar acontecendo e assim tentar lhe ajudar, consegue fornecê-los?

Fico no aguardo

Sim, claro!

app.js

var app = require('./config/express')();

var rotasProdutos = require('./app/routes/produtos')(app);

app.listen(3000,function(){
    console.log("Servidor funcionando!");
});

produtos.js

var connectionFactory = require('../infra/connectionFactory');

module.exports = function(app){
    app.get('/produtos', function(req,res){
        var connection = connectionFactory();

        connection.query('select * from livros', function(err, results){
        res.render('produtos/lista',{lista:results});
        });

        connection.end();
    });
}

connectionFactory.js

var mysql = require('mysql');
module.exports = function(){
    return mysql.createConnection({
           host : 'localhost',
           user : 'root',
           password : 'root',
           database : 'casadocodigo'
    });
}

express.js

var app = require('express')();
app.set('view engine', 'ejs');
app.set('views','./app/views');

module.exports = function(){
    return app;
}

lista.ejs

<html>
    <body>
        <table>
            <tr>
                <td>id</td>
                <td>titulo</td>
                <td>descricao</td>
                <td>preco</td>

            </tr>
            <tr>
                <%for(var i=0;<lista.lenght;i++) {%>
                    <tr>
                        <td><%lista[i].id%></td>
                        <td><%lista[i].titulo%></td>
                        <td><%lista[i].descricao%></td>
                        <td><%lista[i].preco%></td>
                    </tr>
                <%}%>
            </tr>
        </table>
    </body>
</html>

E isto... Obrigada.

Por favor, alguém me ajuda para eu continuar estudando!! Eu acrescentei isto no código:

connection.query('select * from livros', function(err, results){
        if (err) {
            console.log(err)
            res.send(err)
            return;
        }

E deu este erro:

{"code":"ER_NOT_SUPPORTED_AUTH_MODE","errno":1251,"sqlMessage":"Client does not support authentication protocol requested by server; consider upgrading MySQL client","sqlState":"08004","fatal":true}

Reinstalei o banco usando este passo a passo: https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/

E continua assim...

Oi Ana, tudo bem?

Ao que parece, pelo erro reportado no console, a sua aplicação não está conseguindo acessar a base de dados por falha na autenticação.

Verifica se os dados de autenticação (usuário, senha, banco, etc) que você passa como objeto ao criar a conexão em connectionFactory.js* realmente correspondem aos dados (usuário, senha, banco, etc) do banco MySQL que você instalou.

* O objeto com dados que dizem respeito a autenticação no banco é o seguinte:

connectionFactory.js

mysql.createConnection({
           host : 'localhost',
           user : 'root',
           password : 'root',
           database : 'casadocodigo'
    });

Banco reinstalado novamente, senha e password corretos. Toda vez que eu entro ele pede o password root, banco criado novamente. Eu não tenho noção do que pode está causando isto.

solução!

Não sei o erro que foi, resolvi no windows, particionei o HD e fiquei tentando em dois sistemas e em um foi. Tentativa erro. Há alguns erros na lista.ejs e conforme fui mexendo, reinstalando tudo... Foi. Darei mais uma olhada no Linux se vai funcionar, mas posso continuar a aula agora. Obrigada!