2012-01-12 7 views
0

de manière asynchrone Vérifiez le codemanutention réponse JSON

var server = http.createServer(function(req, res){ 
    var parsedUrl = require('url').parse(req.url); 
    var pathname = parsedUrl.pathname; 
    pathname = pathname.replace('/get/',''); 

    GPSData.find({}, function(err, data) { 
     if(err) 
      console.log(err, data, data.length); 
     res.writeHead(200, { 
       "Content-Type": "application/json", 
       "Access-Control-Allow-Origin": "*" 
     }); 
     console.log('hello'); 
     res.end(data); 
    }); 

}); 

Comment obtenir des données JSON de db et émission en réponse? Si je déplace res.end ('some-json') sur GPSData.find() alors je peux voir ma page dans le navigateur mais comment afficher les données de db en réponse?

Comment gérer tout cela de manière asynchrone?

+0

Cela ne devrait pas être async à moins que vous voulez vraiment rendre la page et le JSON séparément (sur websockets ou autre). Est le problème que la page ne rend pas si vous gardez res.end dans le rappel? – glortho

+0

Oui si res.end est à l'intérieur du rappel, la page ne rend pas – coure2011

+0

Et 'bonjour' obtient la sortie de la console? À quoi ressemblent les données à ce moment-là? – glortho

Répondre

0

Ok je trouve que je dois stringify mes données avant d'envoyer une réponse de retour

var body = JSON.stringify(data); 
res.end(body); 
0

Si le navigateur affiche "Cette page Web n'est pas disponible" alors vous devriez recevoir quelques messages d'erreur dans la console, ou il vous manque simplement server.listen(<port_number>); à la fin.