3
respostas

Erro em node.js

Eu estou com um erro bobo, mas não acho uma solução, eu abro o site no navegador e dá esse erro ( Cannot read property 'length' of undefined )

Códigos :

lista.ejs

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

proutos.js


module.exports = function(app){
    app.get('/produtos', function(req,res){
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host : 'localhost',
            user : 'root',
            password : '',
            database : 'casadocodigo_nodejs'
        });

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

        });

        connection.end();


    });
}
3 respostas
module.exports = function(app){
    app.get('/produtos', function(req,res){
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host : 'localhost',
            user : 'root',
            password : '',
            database : 'casadocodigo_nodejs'
        });
        connection.connect(function(err) {
            if (err) throw err; // Tem que tratar melhor isso aqui para mostrar um erro melhor para o usuário
            console.log("Agora está conectado com o banco!");

            connection.query('select * from livros', function(err, results){
                if (err) throw err; // como não era lançado se houvesse um erro passava batido.

                console.log("Teste para ver o que é retornado do banco antes de colocar na view:\n", results);
                //se o que retornar for um objeto ao invés de um Array esse é o problema, pois objetos não possuem 'length'


                connection.end();  //fecha antes do retornar
                res.render('produtos/lista',{lista:results});                
            }
        });
    });
};

Olá Ashley, obrigado por tentar ajudar...

depois que eu puis esse código o servidor não abre mais, deu algum erro de syntax...

Pronto, é só copiar e colar

module.exports = function (app) {
    app.get('/produtos', function (req, res) {
        var mysql = require('mysql');
        var connection = mysql.createConnection({
            host: 'localhost',
            user: 'root',
            password: '',
            database: 'casadocodigo_nodejs'
        });
        connection.connect(function (err) {
            if (err) throw err; // Tem que tratar melhor isso aqui para mostrar um erro melhor para o usuário
            console.log("Agora está conectado com o banco!");

            connection.query('select * from livros', function (err, results) {
                if (err) throw err; // como não era lançado se houvesse um erro passava batido.

                console.log("Teste para ver o que é retornado do banco antes de colocar na view:\n", results);
                //se o que retornar for um objeto ao invés de um Array esse é o problema, pois objetos não possuem 'length'

                connection.end(); //fecha antes do retornar
                res.render('produtos/lista', {
                    lista: results
                });
            });
        });
    });
}