2013-03-12 16 views
5

Sto utilizzando la mia app di nodo per recuperare alcuni dati da un'API e voglio visualizzare tali dati in una vista e consentire all'utente di modificarli lì. Sto chiamando l'API e ricevo una risposta JSON che vorrei passare sulla vista. Ecco quello che sto facendo:Passare i dati per visualizzare nel nodo + express

var query = 'SELECT Id, OwnerId, ActivityDateTime, EndDateTime, WhatId, WhoId, Subject FROM Event WHERE OwnerId = \'' + user.userId + '\'' ; 
    // execute the query and get response 
    ... 
    ... 
    var ev = resp.records; 
    res.render('index.html', {eventData : ev}); 

problema è che quando poi voglio usare i dati a mio avviso, si ottiene un errore indefinito.

Se lo faccio:

<div id='Subject'>#{eventData.Subject}</div> 

ottengo una stampa di # {} eventData.Subject

Cercando di utilizzare i dati in JS restituisce un errore non definito:

<script type="text/javascript"> 
    var mydata = #{eventData}; 
    </script> 

Dopo alcune ricerche ho trovato un post che suggeriva di renderlo più stringente:

var mydata = !{JSON.stringify(eventData)}; 
    console.log(mydata); 

Qui, ottengo un errore di sintassi "SyntaxError: manca: dopo la proprietà id"

Sono abbastanza sicuro che mi manca qualcosa di base e non posso per la vita di me capire. Ho trovato un sacco di articoli che spiegano come farlo in Jade, ma non voglio usare Jade e l'utilizzo dei consigli degli articoli comporta errori "non definiti" o "caratteri non validi".

Sono tutto fuori di idee ... aiuto? Tnx

+3

quale sistema di templating state usando? –

+0

sto usando un gestore personalizzato: app.register (, { compilazione: function (str, opzioni) { funzione di ritorno (locali) { ritorno str; }; }} 'html.'); –

risposta

3

Il commento di Jonathan Ong in realtà mi ha portato sulla strada giusta. Dato che stavo usando un gestore cliente per html, non avrebbe interpretato alcuna variabile.

sono passato ad utilizzare ejs:

 // view engine ejs 
    app.set('view engine', 'ejs'); 
    app.register('.html', require('ejs')); 

e utilizzati i seguenti segnaposto:

<%= eventData.Subject %> 

Questo in realtà ha reso i miei dati visualizzati. Grazie per tutti i commenti e le risposte! Michael

+1

dovresti accettare la tua risposta, lo renderà utile per le persone che cercano problemi simili. – booyaa

Problemi correlati