javascript - 解析数据数组并使用 nodemailer 发送?

标签 javascript arrays node.js nodemailer

我有一组数据,我想使用 NodeMailer 将其发送到表中,如下所示:

var results = [ { 
    asin: 'B01571L1Z4',
    url: 'domain.com',
    favourite: false,
    createdAt: 2016-11-18T19:08:41.662Z,
    updatedAt: 2016-11-18T19:08:41.662Z,
    id: '582f51b94581a7f21a884f40' 
  },
  { 
    asin: 'B01IM0K0R2',
    url: 'domain2.com',
    favourite: false,
    createdAt: 2016-11-16T17:56:21.696Z,
    updatedAt: 2016-11-16T17:56:21.696Z,
    id: 'B01IM0K0R2' 
   }]

我想做的是在我的 HTML 中创建一个循环,然后循环遍历数据。我确实尝试了以下方法,但我能做的似乎有限制。

  var sendUpdatedMerch = transporter.templateSender({
      from: '"Test" <domain1@gmail.com>', // sender address
      subject: 'Test Updates', // Subject line
      html: '<div><table><thead><tr><th>ASIN</th><th>Url</th><th>Favourite</th><th>createdAt</th></tr></thead><tbody>{{result.forEach((item) => {<tr><td>{{asin}}</a></td><td>{{url}</td><td>{{favourite}}</td><td>{{createdAt}}</td></tr>})}}</tbody></table></div>' // html body
  });

  sendUpdatedMerch({
    to: 'domain@gmail.com'
  }, {results}, function(err, info){
    if(err){
      console.log(err);
    } else {
      console.log('Done');
    }
  })

谁能指出我哪里出错了,以及我需要做些什么来纠正我的问题。

最佳答案

您似乎已尝试使用 results.forEach((item) 但您将其放在引号内 'result.forEach((item)' 这是一个字符串,根本不会执行。

当您使用像 jadeswig 等 View 引擎时,您可能在页面中使用过这种语法,它们将为您进行解析。但是在这里,您应该手动调用它们来解析这种语法。

否则,您可以使用下面的数组函数进行解析,其中我使用了 array.reduce,它很方便并且可以很好地进行解析。

您可以尝试生成 content 并将其附加到 html,如下所示。

    html: '<div><table><thead><tr><th>ASIN</th><th>Url</th><th>Favourite</th><th>createdAt</th></tr></thead><tbody>' + 
content + '</tbody></table></div>' // html body

var results = [ { 
    asin: 'B01571L1Z4',
    url: 'domain.com',
    favourite: false,
    createdAt: '2016-11-18T19:08:41.662Z',
    updatedAt: '2016-11-18T19:08:41.662Z',
    id: '582f51b94581a7f21a884f40' 
  },
  { 
    asin: 'B01IM0K0R2',
    url: 'domain2.com',
    favourite: false,
    createdAt: '2016-11-16T17:56:21.696Z',
    updatedAt: '2016-11-16T17:56:21.696Z',
    id: 'B01IM0K0R2' 
   }];

var content = results.reduce(function(a, b) {
  return a + '<tr><td>' + b.asin + '</a></td><td>' + b.url + '</td><td>' + b.favourite + '</td><td>' + b.reatedAt + '</td></tr>';
}, '');

console.log(content);

/*
var sendUpdatedMerch = transporter.templateSender({
      from: '"Test" <domain1@gmail.com>', // sender address
      subject: 'Test Updates', // Subject line
      html: '<div><table><thead><tr><th>ASIN</th><th>Url</th><th>Favourite</th><th>createdAt</th></tr></thead><tbody>' + content + '</tbody></table></div>' // html body
  });


  sendUpdatedMerch({
    to: 'domain@gmail.com'
  }, {results}, function(err, info){
    if(err){
      console.log(err);
    } else {
      console.log('Done');
    }
  })
  
  */

关于javascript - 解析数据数组并使用 nodemailer 发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40956866/

相关文章:

c++ - 一个尾数下标的明显规范不足:对于原始数组和 std::vector。已经果断解决了吗?

jquery - 使用 jQuery 遍历多个 html 表

javascript - NestJS + TypeORM - 连接到 mysql 和 mongodb 时出错

javascript - 使用 JavaScript/jQuery 从输入类型 "file"获取二进制图像数据,以便在 WebMatrix 中使用 AJAX 进行图片预览

javascript - 当文本框值更改时,将焦点设置在表格最后一行的特定单元格上

具有多个选择结果的Javascript复选框数组

javascript - Google Sheets API Node 客户端库最小示例

node.js - 用香蕉煎饼制作早午餐时出错

node.js - 连接 Node.js 和 openFrameworks

javascript - 在 AngularJS 中处理元素大小调整