Foros del Web » Programando para Internet » Node.js »

[SOLUCIONADO] Recojer valor de variable dentro de función

Estas en el tema de Recojer valor de variable dentro de función en el foro de Node.js en Foros del Web. Hola, estoy tratando de recojer las aplicaciones de un usuario, luego obtener el estado de cada aplicación y almacenar en una variable "response" todos los ...
  #1 (permalink)  
Antiguo 13/04/2013, 12:20
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 10 meses
Puntos: 9
Recojer valor de variable dentro de función

Hola, estoy tratando de recojer las aplicaciones de un usuario, luego obtener el estado de cada aplicación y almacenar en una variable "response" todos los datos para luego enviarlo.

Código NodeJS:
Ver original
  1. var response = '';
  2.             client.query('SELECT appid FROM user_applications WHERE userid = "' + [user] + '"', function(error, rows) {
  3.                
  4.                 for(var i = 0; i < rows.length; i++) {
  5.                     client.query('SELECT name, active FROM applications WHERE id = "' + rows[i].appid + '"', function(error, rows) {
  6.                         if(rows[0].active == '1') {
  7.                             response += rows[0].name + ' [<b style="color: green;">OK</b>]<br>';
  8.                         } else {
  9.                             response += rows[0].name + ' [<b style="color: red;">OK</b>]<br>';
  10.                         }      
  11.                     });
  12.                 }
  13.                 socket.emit('SendConsole', response);
  14.             });

el problema que tengo es que el response, al estar dentro de una función y el socket lo envio desde fuera no lo obtiene.

¿Alguna posible solución?
  #2 (permalink)  
Antiguo 13/04/2013, 16:22
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 3 meses
Puntos: 103
Respuesta: Recojer valor de variable dentro de función

Hola SeaPirates !
Habia leído tu tema anterior, donde tenias varias dudas, primero te voy a decir que
Código Javascript:
Ver original
  1. 'SELECT appid FROM user_applications WHERE userid = "' + [user] + '"'
encerrar la variable user en corchetes, no elimina las posibilidades de un SQL Injection, deberias usar una expresión regular para eliminarlo, en todo caso, te recomiendo que utilices una base de datos noSQL como mongoDB o redis, ya que se vuelve mas facil de manejar los datos ( en todo caso, yo prefiero no utilizar ninguna Base de datos, utilizo clases donde guardo toda la información en memoria, y cuando cierro el servidor se guarda toda la info, para luego reingresarla al iniciarlo)

despues, la solución para tu problema, no se si será la misma que le comente a mark1829 en este tema

un saludo ! suerte
  #3 (permalink)  
Antiguo 14/04/2013, 05:06
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: Recojer valor de variable dentro de función

Algo así hice anteriormente, pero si hay 10 registros en la base de dato, enviaría 10 sockets al instante, uno por cada registro. ¿Eso no saturaría el servidor?

Última edición por SeaPirates; 14/04/2013 a las 05:48
  #4 (permalink)  
Antiguo 14/04/2013, 12:52
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 16 años, 3 meses
Puntos: 103
Respuesta: Recojer valor de variable dentro de función

Cita:
Iniciado por SeaPirates Ver Mensaje
Algo así hice anteriormente, pero si hay 10 registros en la base de dato, enviaría 10 sockets al instante, uno por cada registro. ¿Eso no saturaría el servidor?
Por que ?? si reemplazas a
Código Javascript:
Ver original
  1. socket.emit('SendConsole', response);
por
Código Javascript:
Ver original
  1. io.sockets.sockets[idSocket].emit('SendConsole', response);
con la variable idSocket que contiene el ID del socket.

se envia la misma cantidad de datos, mediante el mismo objeto, ya que
io.sockets.sockets[idSocket] y socket se referira a el mismo objeto, por lo que tendra desde los mismos metodos , hasta el mismo estado

asi que, no hay diferencia perceptible( la unica diferencia variará en algunos nanosegundos ) por la forma de llamarlo

Un saludo !
  #5 (permalink)  
Antiguo 15/04/2013, 11:45
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 786
Antigüedad: 15 años, 10 meses
Puntos: 9
Respuesta: Recojer valor de variable dentro de función

Perfecto, muchas gracias.

Ya entendí lo que querías decir:

Código node.js:
Ver original
  1. client.query('SELECT appid FROM user_applications WHERE userid = "' + [user] + '"', function(error, rows) {
  2.                
  3.                 for(var i = 0; i < rows.length; i++) {
  4.                     client.query('SELECT name, active FROM applications WHERE id = "' + rows[i].appid + '"', function(error, rows) {
  5.                         if(rows[0].active == '1') {
  6.                             SendResponse(id, 'Activado');
  7.                         } else {
  8.                             SendResponse(id, 'Desactivado');
  9.                         }
  10.                     });
  11.                 }
  12.                
  13.             });
  14.            
  15.             function SendResponse(id, data) {
  16.                 io.sockets.sockets[id].emit('SendConsole', data);
  17.             }

Etiquetas: recojer, valor, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:18.