Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

o alert não funciona!

quando mando a promoção não aprece o alert... :(

o script

<script src="/socket.io/socket.io.js"</script>
<script>
    var socket = io();
    socket.on('novaPromocao', function (data) {
        alert(data.livros.id);
    });
</script>

a rota

module.exports = function(app){
    app.get('/promocao', function(req, resp){
        var connection = app.infra.connectionFactory();
        var produtosDAO = new app.infra.ProdutosDAO(connection);
        produtosDAO.findAll(function (err, results) {
            if (err) {
                return next(err)
            }
            resp.render('promocao/form', {lista:results})
        });
        connection.end();
    });
     app.post("/promocao", function(req,res) {
        var promocao = req.body;

        app.get('io').emit("novaPromocao",promocao);
        res.redirect("/promocao");
    });

}

o app.js

var app = require('./config/express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);    

app.set('io',io);

http.listen(3000, function () {
    console.log("Server Running at Port 3000");
});

o que pode ser?

4 respostas

Opa Gustavo, provavelmente nem está entrando no if, chegou a testar? O código em si, pelo menos vendo aqui, parece correto. No seu navegador, na aba network do seu devtools, aparece que o socket.io foi achado? O websocket realmente está aberto?

Consegui, n tinha notado que tinha que deixar duas abas abertas pra fazer isso :( e me tira uma duvida... eu não entendi para que serve o livro[i] na tag select... poderia me explicar?

livro[id]

solução

Opa Gustavo. Blz?

Esse livro[id] no atributo name da tag select serve para indicar que o valor que deve ser enviado dessa tag no momento que for realizado o POST é o id do objeto livro.

A ideia é identificar a propriedade id do livro tirando proveito do bodyParser que a gente usou com

app.use(bodyParser.urlencoded({extended=true}))

Esse formato com colchetes é a forma que o bodyParser usa para navegar nas propriedades de um objeto. No caso o objeto é cada livro da lista que preenche o select.