São diversos arquivos para alterar, não sei o que faltou e não aprece mensagem de erro, só não aparece o alert que deveria depois que cadastra.
Onde está o data.livro?
Como eu vejo se o json está certo. O node está convertendo os dados do banco em json?
De onde vem o livro?
De onde vem novaPromocao?
promocoes.js
module.exports = function(app) {
app.get("/promocoes/form",function(req,res){
var connection = app.infra.connectionFactory();
var produtosDAO = new app.infra.ProdutosDAO(connection);
produtosDAO.lista(function(erros,resultados){
console.log(erros);
res.render('promocoes/form',{lista:resultados});
});
connection.end();
});
app.post("/promocoes", function(req,res){
var promocao = req.body;
app.get('io').emit('novaPromocao',promocao);
res.redirect('promocoes/form');
})
}
index
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('novaPromocao',function(data){
alert("Livro em promocao "+data.livro.id);
});
</script>
form
<html>
<body>
<form action="/promocoes" method="post">
<div>
<input type="text" name="mensagem"/>
</div>
<div>
<select name="livro[id]">
<%for(var i=0;i<lista.length;i++){%>
<option value="<%=lista[i].id%>"><%=lista[i].titulo%></option>
<%}%>
</select>
</div>
<input type="submit" value="Cadastrar promoção"/>
</body>
</html>
home
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("Servidor rodando");
});