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