hola chicos pues bueno lo solucione pero debo decir que me demore bastante. lo que tu dices de modelos de html como jade lo pense pero en vez de archivos jade lo intente con archivos hbs mejor conocidos como handlebars que es muy similar. PERO no pude ya que en el problema de arriba (en codigo) me falto terminarla. Pero lo que continuaba era unas funciones que estaban aparte mejor dicho era un mierdero!!! cosa que me quedaria mucho mas grande con esos archivos (eso no significa que no los utilizare a futuro :D ) ahora como lo soluciones????. Pues bueno debiado a que yo antes de node programe en PHP y demas lenguajes siempre pienso como ellos (sync) pero con node es diferente. Supe que tenia que acoplarme o acoplarme de lo contrario nunca lograria avanzar y gracias a Dios des pues de unos dias de pensar como solucionarlo al estilo node lo pude hacer :D . LO que hice fue ordernar las consultas por que estaba repitiendo unas y otras no tenbian que estar de ultimas sino de primeras el caso es que habia que ordenar y despues le pase todos los resultados de esas consultas en un objeto a otra funcion sincroma. AQUI ESTA EL CODIGO PERO ES ALGO LARGO PERO FUNCIONA SI ALGUIEN PONE OTRA FORMA DE SOLUCIONARLO ESCRIBAN ABAJITO :D :
Código Javascript
:
Ver originalfunction histori(dato, callback) {//es la que inicia todo desde el socket!!
var usuario = dato.meet.substr(17).substr(0, dato.longs.substr(8)), session=dato.session;
var historias = [], userObj = [];
timeLine(conexion, usuario, function(a){
var loop = a.length, count = 0, abc=1;
a.forEach(function(ele, ind){// se hace un foreach para recorrer el array ind es el indice y ele es el cotenido
slt.selectEspecific(conexion, ['nick', 'nombres', 'conectado'], 'usuario', 'cod', ele.seguido, 'cod', '', 0, 1, function (user){
if(ele.NoSee!==null){
switch(ele.NoSee){
case String(usuario):
abc+=1;//no hace nada pero se va sumando
//console.log('no lo ve el dueño', ind);
break;
case '0000':
abc+=1;//no hace nada pero se va sumando
//console.log('no lo ve nadie', ind);
break;
default:
domHistory(session, usuario, diseno, conexion, slt, ele, user[0], function(e){//la que hace todas las consultas
if(historias.length+abc===loop){//si los dos son iguales envia el callback al usuario osea un array :D
callback(historias);
}
historias.push(e);
});
break;
}
}else{
domHistory(session, usuario, diseno, conexion, slt, ele, user[0], function(e){//la que hace todas las consultas
if(historias.length+abc===loop){
callback(historias);
}
historias.push(e);
});
}
});
});
});
}
function domHistory(session, usuario, diseno, conexion, selects, fila5, fila6, callback){//funcion que hace todas las consultas y las envia a otra para que cree lo que es el diseño
var datos={};
datos.fila5=fila5;
datos.fila6=fila6
slt.difucion(conexion, 'arreglo', fila5.arreglo, function(difucion){
datos.difucion=difucion[0];
slt.CountAnswer(conexion, fila5.cod, function(CountAnswer){//cantidad de respuestas de la historia
if(CountAnswer.length>0)
datos.cantidad=CountAnswer[0].cantidad;
slt.numerosLikeNo(conexion, 'gustarNogustar', 'historia', fila5.cod, 'gustaNOgusta', 1, function(a){
if(a)
datos.likeCount=a;
slt.numerosLikeNo(conexion, 'gustarNogustar', 'historia', fila5.cod, 'gustaNOgusta', 0, function(a){
if(a)
datos.nolikeCount=a;
if(session.user!==undefined){//comprueba que el usuario este logeado
if(parseInt(String(session.user).substr(4))===fila5.seguido)//si el usuario es el dueño de la historia
datos.usuario=1;//siginifica que elimina su historia
else
datos.usuario=2;//difunde esa historia
var column=['historia', 'usuario', 'gustaNogusta'];
var dato=[fila5.cod, String(session.user).substr(4), 1];
slt.UniversalSelect(conexion, 'gustarNogustar', column, dato, 'cod', '', 0, 10, function(resul){//busca si el usuario ya le dio gustar para que no lo vuelva a hacer
if(resul.length<1)
datos.meLike=1;
column=['historia', 'usuario', 'gustaNogusta'];
dato=[fila5.cod, String(session.user).substr(4), 0];
slt.UniversalSelect(conexion, 'gustarNogustar', column, dato, 'cod', '', 0, 10, function(resul){//busca si este usuario ya le dio no me gusta
if(resul.length<1)
datos.meNolike=1;
slt.followValidator(conexion, 'seguidor_seguido', 'seguido', fila5.seguido, 'seguidor', String(session.user).substr(4), function(ValiSegui){
if(ValiSegui.length>0){
slt.followValidator(conexion, 'seguidor_seguido', 'seguidor', fila5.seguido, 'seguido', String(session.user).substr(4), function(ValiSegui){
if(ValiSegui.length>0)
datos.ValiSegui=1;//son amigos
else
datos.ValiSegui=2;//no son amigos
datos.session=session;
callback(diseno.CrearDom(datos));//la funcion CreaDom devuelve un dato que es un string el cual tiene el diseño en html no lo muestro por que eso ya es normal la magia viene aqui
});
}
});
});
});
}
});
});
});
});
}
se me habia olvidado decirles que yo trabajaba o trabajo con php entonces tengo mi proyecto en apache y me conecto con socket con la direccion ip de mi pc:3000 que es el puerto donde esta node