2012-09-11 21 views
5

Estoy trabajando en un proyecto NodeJs por primera vez. Y ahora estoy atascado con la función que devuelve valores a través de JS y obtengo valores para usar en express.función que devuelve valores como undefined en nodejs

var dbitems = "before fn"; 
function refreshData(callback) { 
     db.open(function (err, db) { 
      if (!err) { 
       db.collection('emp').find().toArray(function (err, items) { 
        dbitems = items; 
        callback(JSON.stringify(items)); 
       }); 
      } 
      else { 
       console.log("Could not be connnected" + err); 
       dbitems = {"value":"not found"}; 
      } 
     }); 

    } 
} 


refreshData(function (id) { console.log(id); }); 

Esta función recupera los valores perfectamente de refreshData y los escribe en la consola. Pero lo que necesito es usar el valor recuperado para enviar en un archivo html expresa de esta función "returnedData"

exports.index = function (req, res) { 
    var valrs = refreshData(function (id) { 
     console.log(JSON.parse(id)); ---this again writes data perfectly in the console 
    }); 
    console.log(valrs); -------------------but again resulting in undefined 
    res.render('index', { title: 'Express test', returnedData: valrs }); 
}; 

se agradecería cualquier ayuda.

Gracias & Saludos, Luckyy.

Respuesta

5

Debe procesar esto después de que finalice la solicitud de la base de datos ... por lo que debe llamarse desde la devolución de llamada.

exports.index = function (req, res) { 
    refreshData(function (id) { 
     res.render('index', { title: 'Express test', returnedData: JSON.parse(id) }); 
    }); 
}; 

es asíncrona por lo que no sólo puede poner valores en orden, tiene que ir a través de las devoluciones de llamada.

+0

Ahí va, gracias Agreco. Hasta el punto de responder y tan apreciado. – Luckyy

Cuestiones relacionadas