2012-10-09 24 views
14

Estoy tratando de iterar un documento JSON usando JADE.Uso de Jade para iterar JSON

mi servidor (Node.js ejecutan + expresan) está haciendo lo siguiente en una petición .get(),

app.get('/search/', function(req,res){ 

    // Parse the query 
    var dbQuery = url.parse(req.url, true).query; 
    var product = dbQuery.product; 
    var category = dbQuery.category; 
    console.log('Searching for: ' + product + ' in ' + category); 

    //Mongo DB setup then query 
    var result; 
    var server = new mongodb.Server('23.23.129.158', 27017, {}); 
    new mongodb.Db('militaryListDB', server, {}).open(function(err, client){ 
    if(err) throw err; 

    var collection = new mongodb.Collection(client, 'products'); 
    collection.find({}).toArray(function(err, results){ 
     console.log(results); 
     console.log(JSON.stringify(results)); 
     res.render('results', {result: JSON.stringify(results), title: 'Test'}); 
    }); 
    }); 
}); 

y esto es lo que se está prestando al cliente.

[{"_id":"50738ebbe3d87c6beaddb6f2","name":"tv","category":"tech","cost":"30"}] 

He leído sobre la documentación de jade para repetir una matriz y pensé que iba a ser el mismo para JSON, pero no está funcionando. Solo muestra un espacio en blanco. Cuando intento esto,

extends layout 
block content 
    div#wrapper     
    p #{results} 

mostrará el documento JSON. Pero cuando pruebo esto,

extends layout 
block content 
    div#wrapper     
    p #{results.name} 

y muestra un espacio en blanco. Cuando debería mostrarse es "tv". Si alguien pudiera ayudarme a entender la iteración de documentos JSON sería increíble.

¡Gracias!

Respuesta

28

En su código no está iteración a través de la matriz results, a hacer lo que debe hacer algo como esto:

for result in results 
    p #{result.name} 
+1

me olvidó incluir esto en el código de ejemplo que he dado. Pero cuando quité JSON.stringify() del lado del servidor funcionó. –

+5

Gracias a Jesús, finalmente, he estado buscando horas ese pequeño código e incluso he contemplado pintar "JADE SUCKS" en el costado de un edificio con sangre de cabra. Si desea otra marca de verificación, http://stackoverflow.com/questions/20485595/how-do-i-send-on-object-from-mongodb-to-jade. GRACIAS. – Squirrl