Javascript SendGrid Node.js集成语法问题

Javascript SendGrid Node.js集成语法问题,javascript,html,node.js,express,sendgrid,Javascript,Html,Node.js,Express,Sendgrid,我正在尝试使用SendGrid在创建新订单时发送电子邮件通知。到目前为止,它在创建订单时发送电子邮件,但无法接收${order.products.map…}中的任何数据。我使用的是vs代码,括号高亮显示从那个区域开始就关闭了,看起来我缺少了一个结束括号,但我看不到它。我只是错误地创建了这个函数,而vs代码通过显示错误的突出显示来告诉我吗 在看了太长时间的代码后,我不确定它到底出了什么问题,我只需要另一双眼睛来帮助我 const create = async (req, res) => {

我正在尝试使用SendGrid在创建新订单时发送电子邮件通知。到目前为止,它在创建订单时发送电子邮件,但无法接收${order.products.map…}中的任何数据。我使用的是vs代码,括号高亮显示从那个区域开始就关闭了,看起来我缺少了一个结束括号,但我看不到它。我只是错误地创建了这个函数,而vs代码通过显示错误的突出显示来告诉我吗

在看了太长时间的代码后,我不确定它到底出了什么问题,我只需要另一双眼睛来帮助我

const create = async (req, res) => {
  try {
    console.log('CREATE ORDER: ', req.body)
    req.body.order.user = req.profile
    const order = new Order(req.body.order)
    order.save((error, data) => {

    const emailData = {
      to: ['Payments@.com', '@.com'], // admin
            from: 'Payments@.com',
            subject: `A new order is received`,
            html: `
            <h1>Hey employee, get this stuff taken care of.</h1>
            <h2>Customer name: ${order.user.first_name} ${order.user.last_name}</h2>
            <h2>Customer address: ${order.delivery_address}</h2>
            
            <h2>User's email: ${order.user.email}</h2>
            <h2>Total products: ${order.products.length}</h2>
            <h2>Products: ${order.products}</h2>
            
            <h2>Order status: ${order.status}</h2>
            <h2>Product details:</h2>
            <hr />
            ${order.products
                .map(p => {
                    return `<div>
                        <h3>Product Name: ${p.name}</h3>
                        <h3>Product Price: ${p.price}</h3>
                        <h3>Product Quantity: ${p.quantity}</h3>
                        <h3>Product Seller: ${p.shop}</h3>
                </div>`;
                })
                .join('--------------------')}
            <h2>Total order cost: ${order.amount}<h2>
            <p>Login to your dashboard</a> to see the order in detail.</p>
        `
    }

    sgMail
            .send(emailData)
            .then(sent => console.log('SENT >>>', sent))
            .catch(err => console.log('ERR >>>', err));

    // email to buyer
    const emailData2 = {
      to: [order.user.email, 'Payments@.com'],
      from: 'Payments@.com',
      subject: `You order is in process`,
      html: `
      <h1>Hey ${order.user.first_name}, Thank you for shopping with us.</h1>
      <h2>Total products: ${order.products.length}</h2>
      
      <h2>Order status: ${order.status}</h2>
      <h2>Product details:</h2>
      <hr />
      ${order.products
          .map(p => {
              return `<div>
                  <h3>Product Name: ${p.name}</h3>
                  <h3>Product Price: ${p.price}</h3>
                  <h3>Product Quantity: ${p.quantity}</h3>
          </div>`;
          })
          .join('--------------------')}
      <h2>Total order cost: ${order.amount}<h2>
      <p>Thank your for shopping with us.</p>
  `
  }
  
  sgMail
            .send(emailData2)
            .then(sent => console.log('SENT 2 >>>', sent))
            .catch(err => console.log('ERR 2 >>>', err));

    res.status(200).json(data)
  })
  } catch (err){
    return res.status(400).json({
      error: errorHandler.getErrorMessage(err)
    })
  }

}
const create=async(req,res)=>{
试一试{
console.log('CREATE ORDER:',req.body)
req.body.order.user=req.profile
常量订单=新订单(请求正文订单)
订单.保存((错误,数据)=>{
常量电子邮件数据={
致:['Payments@.com“,”@.com'],//管理员
发件人:'Payments@.com',
主题:`收到新订单',
html:`
嘿,员工,把这些东西处理好。
客户名称:${order.user.first\u name}${order.user.last\u name}
客户地址:${订单.交货地址}
用户电子邮件:${order.User.email}
产品总数:${order.products.length}
产品:${order.Products}
订单状态:${Order.status}
产品详情:

${order.products .map(p=>{ 返回` 产品名称:${p.Name} 产品价格:${p.Price} 产品数量:${p.Quantity} 产品销售商:${p.shop} `; }) .join('------------------')} 订单总成本:${order.amount} 登录仪表板查看订单的详细信息

` } 邮政总局 .发送(电子邮件数据) .then(sent=>console.log('sent>>>,sent)) .catch(err=>console.log('err>>>',err)); //给买家的电子邮件 常量emailData2={ 致:[order.user.email,'Payments@.com'], 发件人:'Payments@.com', 主题:`您的订单正在处理', html:` 嘿${order.user.first_name},谢谢你和我们一起购物。 产品总数:${order.products.length} 订单状态:${Order.status} 产品详情:
${order.products .map(p=>{ 返回` 产品名称:${p.Name} 产品价格:${p.Price} 产品数量:${p.Quantity} `; }) .join('------------------')} 订单总成本:${order.amount} 谢谢你和我们一起购物

` } 邮政总局 .发送(emailData2) .then(sent=>console.log('sent 2>>>',sent)) .catch(err=>console.log('err2>>>,err)); res.status(200).json(数据) }) }捕捉(错误){ 返回res.status(400).json({ 错误:errorHandler.getErrorMessage(err) }) } }
不确定这是否是导致您出现问题的原因,或者只是为了公众消费而对代码进行清理,但您的标签不匹配:
登录仪表板查看详细订单。

感谢您指出这一点,只需删除标签即可。不幸的是,这并不是我所希望的简单解决方法。我假设电子邮件的产品总数大于零?我相信是的,但我不太清楚你的意思。只有在创建/订购了某些内容时才会发送电子邮件,因此根据设计,它总是大于0。我只是想问,缺少内容的电子邮件的内容是否为Total products(大于零的数字)。一个空数组将产生一个缺少的部分,因为将没有任何内容可供
map
join