2016-07-24 11 views
0

ich einen Twitter-Knotenmodul verwende Suche abzurufen, die api verwenden und sie in einem Array von Objekten gespeichert in einer Variablen namens „Tweets“, die aussieht wie wenn man:Wie übergebe ich ein Array von Objekten zur Jade-Anzeige?

[ { created_at: 'Sun Jul 24 20:32:34 +0000 2016', 
    text: '2 Timothy 1:7 #nofear #power #love #sound-mind', 
    user: 
    { id: 90281227, 
     name: 'Anavella', 
     screen_name: 'anavellar' } }, 
{ created_at: 'Sun Jul 24 20:32:34 +0000 2016', 
    text: 'Look, then, that the light in you is not darkness.Lucas 11:35 #Love, 
    user: 
    { id: 197893427, 
     name: 'Sandra Melanny Rojas', 
     screen_name: 'MelannySan' } } ] 

, wenn ich es ausdrucken auf die Konsole. Ich bin Rendern die Ansicht, die die folgende Codezeile verwenden:

res.render('index', { title: 'Express', data: JSON.stringify(tweets) }); 

Auf der Jade-Vorlage ich so etwas wie diese:

block content 
    h1= title 
    p Welcome to #{title} 
    -var jsonObj = !{JSON.parse(data)} 
    if jsonObj 
    ul 
     each tweet, i in jsonObj 
     li= tweet 

aber ich bekomme einen unerwarteten Token Fehler.

Im Wesentlichen versuche ich, das Array von Objekten, die ich in index.js erstellt habe, an die index.jade-Ansicht zu übergeben und in der Lage zu sein, das Array von Objekten zu durchlaufen, so dass ich das Ergebnis in der anzeigen kann Aussicht.

UPDATE

Ich entfernte die {} von JSON.parse (Daten) es

-var jsonObj = JSON.parse(data) 

machen, das den unerwarteten Token Fehler beseitigen endete. In diesem Fall erhalte ich immer noch den Fehler "Unerwartetes Ende der JSON-Eingabe", der sich auf die gerade bearbeitete Zeile bezieht.

+0

1) Sind Sie sicher, dass das Array als JSON analysiert werden muss? 2) Haben Sie versucht, die Daten im Controller zu analysieren? – pdoherty926

+0

Ich habe es stringifiziert, bevor ich es in die Jade-Ansicht übergeben habe, weshalb ich es analysiere. Ich habe versucht, es in der Steuerung zu analysieren, und es meldet das Beispiel-Array, das ich oben gesetzt habe. @ pdoherty926 –

+0

Sie sollten in der Lage sein, das Array einfach an die Ansicht zu übergeben, ohne es zu stringieren/zu analysieren. – pdoherty926

Antwort

0

Sie brauchen nicht zu verwenden stringify, während die Kontextdaten zu Ihrer Ansicht vorbei:

res.render('index', { title: 'Express', data: tweets }); 

nun in Ihrem Jade, können Sie einfach durch das Array durchlaufen und die Eigenschaften des Objekts drucken Punktnotation oder eckige Klammer-Notation wie wir normalerweise tun:

block content 
    h1= title 
    p Welcome to #{title} 
    ul 
    each tweet in data 
     li= tweet.text