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

Dúvida no Ex. 4 da Aula 4 - Content negotiation

Ao executar no terminal estou recebendo o seguinte erro:

events.js:141
    throw er; // Unhandled 'error' event 
    ^                                                                                                                                                         Error: socket hang up
    at createHangUpError (_http_client.js:200:15)
    at Socket.socketOnEnd (_http_client.js:292:23)
    at emitNone (events.js:72:20)
    at Socket.emit (events.js:166:7) 
    at endReadableNT (_stream_readable.js:913:12)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)

Não consigo encontrar o que eu fiz de errado. O meu código: produtos.js

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

    var connection = app.infra.connectionFactory();
    var produtosDAO = new app.infra.ProdutosDAO(connection);

    produtosDAO.lista(function(error, result) {
      res.format({
        html: function() {
          res.render('produtos/lista', {lista: result});
        },
        json: function() {
          res.json(result);
        }
      })

    });
    connection.end();
  });

  app.get('/produtos/form', function(req, res) {
    res.render('produtos/form');
  });
  app.post('/produtos', function(req, res) {
    var produto = req.body;

    var connection = app.infra.connectionFactory();
    var produtosDAO = new app.infra.ProdutosDAO(connection);

    produtosDAO.salva(produto, function(error, result) {
      res.redirect('/produtos');
    });
    connection.end();
  });
}

express.js

var app = require('express')();
var bodyParser = require('body-parser');
var load = require('express-load');

app.set('view engine', 'ejs');
app.set('views', './app/views');
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

module.exports = function() {
  load('routes', {cwd: 'app'})
    .then('infra')
    .into(app);

  return app;
}

cliente-android.js

var http = require('http');

var configuracoes = {
  hostname: 'localhost',
  port: 3000,
  path: '/produtos',
  headers: {
    'Accept': 'application/json',
    'Content-type': 'application/json'
  }
}

var client = http.request(configuracoes, function(res) {
  console.log(res.statusCode);
  res.on('data', function(body) {
    console.log(body.toString());
  });
});

var produto = {
  titulo: 'Nodejs',
  preco: 150.00,
  descricao: 'Uma estudo completo das features do Nodejs'
}

client.end(JSON.stringify(produto));
3 respostas

Também estou no aguardo de uma resposta para essa dúvida.

solução!

Olá Thiago Santos,

Curiosamente eu tropecei neste mesmo problema agorinha. Está faltando a diretiva 'method' dentro da var de configurações para que o Node.js saiba que esta requisição se trata de um 'post' e não de um 'get'.

Um abraço!

Valeu mesmo Gregory. Se não fosse por você cara!