node.js - tutorial - NodeJs no puede establecer encabezados después de que se envían
npm (1)
Lamentablemente, no funciona de esa manera. Está llamando a la función render()
que hace que el motor de representación envíe los datos del diseño especificado y cierre la conexión. Esa es exactamente la razón por la que está obteniendo el error de encabezados ya enviado.
La función res.render()
solo debe res.render()
una vez por solicitud.
Cree una matriz var response=[]
y cambie sus loops así:
var response=[];
for (j=0; j<data.length; j++) {
for(i=0; i<data[j].categories.length; i++) {
var link_path = data[j].categories[i].categories;
link_path.type = { data: req.params.categorie };
response.push({
location: data[j].id,
title: data[j].page_title,
name: data[j].name,
description: data[j].page_description,
mens_link: "/mens",
womens_link: "/womens",
data_id: data[j].id,
type: req.params.categoriy,
cat: data[j].categories,
categories: data[j].categories[i].categories
});
}
}
res.render(''home'', response);
y en sus bucles for, inserte cada uno de los elementos que se van a renderizar en esa matriz.
Tenga en cuenta que obtendrá una matriz de objetos en su respuesta en el diseño de su home
.
En mi proyecto nodejs devuelve el siguiente mensaje:
Error: No se pueden establecer encabezados después de enviarlos. He visto muchas preguntas en este sitio web, pero aún no puedo encontrar una solución. Por favor ayuda.!!!
Ese es mi código:
routes.js
var mongodb = require(__dirname+"/db.js");
var fs = require("fs");
var hbs = require("express3-handlebars");
var soap = require(''soap'');
var url = "http://infovalutar.ro/curs.asmx?wsdl";
var index = null;
module.exports = {
home: function(req, res) {
mongodb.db().collection("categories").find({id: req.params.category}).toArray(function(err, data) {
for (j=0; j<data.length; j++) {
for(i=0; i<data[j].categories.length; i++) {
var link_path = data[j].categories[i].categories;
link_path.type = { data: req.params.categorie };
res.render("home", {
location: data[j].id,
title: data[j].page_title,
name: data[j].name,
description: data[j].page_description,
mens_link: "/mens",
womens_link: "/womens",
data_id: data[j].id,
type: req.params.categoriy,
cat: data[j].categories,
categories: data[j].categories[i].categories
});
}
}
});
},
product_list: function(req, res) {
mongodb.db().collection("products").find({primary_category_id: req.params.sub_category}).toArray(function(err, data) {
for (s=0; s<data.length; s++) {
for (v=0; v<data[s].image_groups.length; v++) {
res.render("product_list", {
products: data,
mens_link: "/mens",
womens_link: "/womens",
main: req.params.category,
sub: req.params.sub_category,
id: req.params.id,
});
}
}
});
},
single_product: function(req, res) {
mongodb.db().collection("products").find({id: req.params.id}).toArray(function(err, data) {
for (s=0; s<data.length; s++) {
for (v=0; v<data[s].image_groups.length; v++) {
res.render("product", {
single_product: data,
mens_link: "/mens",
womens_link: "/womens",
main: req.params.category,
sub: req.params.sub_category,
id: req.params.id,
});
}
}
});
}
};