2013-08-04 5 views
7

Wie kann ich ein Objekt verwenden, das ich durchlaufen habe, um innerhalb eines Bildes zu jade, verwende ich auch mongodb, um die Daten zu halten.Bild einfügen mit Jade und NodeJS

Derzeit ist dieses mein Code:

db.collection('blogposts', function(err, collection) { 
    if (err) throw err; 
    collection.find().toArray(function(err, docs) { 
     if (err) throw err; 
     res.render('table', { title: 'Blog Posts', tab: "list" , blogposts: docs }); 
    }); 
}); 

So habe ich die NodeJS durch eine mongodb Sammlung bis hin zu Jade, vorbei dann in Jade ich habe:

div.span9 
    table.table.table-bordered.table-striped.noborder 

     each row in blogposts 
      tr 
       td 
        div.blogtitle #{row.Title} 
        br 
        div.blogheading #{row.Heading} 
        br 
        div.namedate #{row.Namedate} 
        br 
        div.imagetable 
         img(src='') 
        br 
        div.blogposts #{row.Posts} 
        br 
        div.blogtags Tags: #{row.Tags} 

Und was ich bin versuchen zu tun ist #{row.Image} innerhalb der tatsächlichen img(src='') als Quelle zu verwenden.

Es scheint, dass ich eine andere Syntax oder etwas verwenden muss, um es innerhalb der Quelle zu verwenden, da es einfach nicht funktioniert.

Antwort

11

Just do img(src= "http://" + row.Image)

Jade wird den src Attributwert als JavaScript-Ausdruck behandelt, bewertet und macht das HTML wie man erwarten würde.

+0

Danke, es nimmt jetzt die Variable auf, aber die Bildquelle basiert auf einem Link (zB http://www.something.com/ Bild.jpg). Das Problem hierbei ist, dass, obwohl die Variable, die sich durch sie hindurch bewegt, "um sie herum" (das heißt, sie erscheint als "http://www.something.com/picture.jpg"), sie nicht erkennt, dass es ein externer Link ist und Willst du das Bild von localhost bekommen. Ich fragte mich, wie man es erkennen, dass es das Bild von einer Website ziehen? – brent

+1

Fügen Sie das "http: //" Protokoll. Antwort aktualisiert. –

+0

Sorry, ich habe vergessen zu erwähnen, es hat bereits http : //, die ganze Sache, die ich an Jade sende, ist "http://www.something.com/picutre.jpg" – brent

0

Ich hatte ein ähnliches Problem. Meine URL hatte bereits https: // vorangestellt. Die Lösung, die funktionierte, war:

img(src=row.Image) 
0

Während, wenn Sie einen Link senden, könnte es funktioniert der Weg wurde detailliert. Wenn Sie über die Daten als Base64-codierte Zeichenfolge senden, dann müssen Sie das folgende in der Bilddaten voranstellen:

„Daten: image/jpeg; base64“

So würden Sie haben: img (src = "Daten: image/png; base64," + row.ImageDataBase64)