Nodejs将后端数据附加到html

时间:2015-09-09 04:11:48

标签: node.js postgresql nodemailer

我使用html作为内容并发送邮件,但是需要另外一个要求从后端获取数据并需要附加到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); }} });

3 个答案:

答案 0 :(得分:1)

更新:我意识到ejs v1可能不那么流行,因此编辑后可以使用v2。

此示例使用ejs,确保安装ejs 以使此示例正常工作。

我没有编写任何错误处理,如果是用于生产,请务必编写错误处理。

使用插入的数据渲染模板:

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

答案 1 :(得分:0)

如果您的HTML文件已准备好将附加数据,那么您可以像这样使用fs.append:

fs.appendFile(pathToFile, dataToAppend, function(err) {
    if (err) // Handle error
    transporter.sendMail({
        from : xxxx@gmail.com,
        to : xxxx@gmail.com,
        subject : 'Invitation',
        html : pathToFile
    })
})

但是如果你有结束标签可能会导致问题......

答案 2 :(得分:0)

你可以使用像nunjucks这样的库(https://mozilla.github.io/nunjucks/api.html#renderstring) var res = nunjucks.render('foo.html',{username:'James'}); 应该给你你想要的HTML。

我没有尝试,但它应该工作。