2015-09-09 5 views
0

Я использую html как содержимое и отправляю почту, но еще одно требование - получить данные из бэкэнд и добавить в html. Я получаю ошибку синтаксиса по пути может кто-нибудь помочь мнеNodejs добавляет данные backend в html

client.query(query, function(err, result1) { 
    var renderTemplate = function('/index2.html', result1.rows) { 
    fs.readFile('/index2.html', 'utf8', function(err, file){ 
     return ejs.render('/index2.html', result1.rows); }} }); 
+0

Какие данные вам нужно получить от бэкэнда? – shan1024

+0

Я получаю имя, email_id человека и сохраняю записи в result1, теперь нужно добавить результат1 в html –

ответ

0

Если файл HTML готов иметь данные прилагаемую к нему, то вы можете использовать fs.append как это:

fs.appendFile(pathToFile, dataToAppend, function(err) { 
    if (err) // Handle error 
    transporter.sendMail({ 
     from : [email protected], 
     to : [email protected], 
     subject : 'Invitation', 
     html : pathToFile 
    }) 
}) 

Но если вы закрывающие теги, что может вызывают проблемы ...

+0

Получение ошибки Неожиданный токен ILLEGAL в месте '@' –

+0

Являются ли строки адресов электронной почты? Они должны быть окружены в '' '' –

0

Вы можете использовать некоторые библиотеки, такие как nunjucks (https://mozilla.github.io/nunjucks/api.html#renderstring) var res = nunjucks.render ('foo.html', {имя пользователя: 'James'}); Должен предоставить вам html, который вы хотите.

Я не пробовал, но он должен работать.

1

ОБНОВЛЕНИЕ: Я понимаю, что ejs v1 может быть не таким популярным, поэтому он был отредактирован для работы с v2.

В этом примере используются ejs, , чтобы установить этот ejs.

Я не писал никаких ошибок обработки, не забудьте написать обработку ошибок, если это для производства.

Rendering шаблона с вставленными данными:

var fs = require('fs'); 
var ejs = require('ejs'); 

var renderTemplate = function(pathToHtmlTemplate, dataToBeInserted) { 

    // reads your template file to be used in the callback 
    fs.readFile(pathToHtmlTemplate, 'utf8', function(err, file) { 

     // returns a rendered html with data to driver code 
     return ejs.render(pathToHtmlTemplate, dataToBeInserted); 

    } 
} 

Вашего шаблон HTML должны использовать что-то вроде <% = data.name%>:

<ul> 
    <li><%=data.name%></li> 
    <li><%=data.email%></li> 
</ul> 

Дополнительной информации о библиотеке: https://github.com/mde/ejs

+0

Получение синтаксической ошибки при закрытии второго цикла. –

+0

@SaiKishore Интересно, скопируйте и вставьте журналы ошибок в свой исходный пост. Также обновление о том, как выглядит ваш код сейчас? – nkl

Смежные вопросы