Я пытаюсь отправить счёт с помощью node.js nodemailer и руля с названием товара, ценой, но когда я это сделаю, он отправит мне счёт за каждый товар. как я могу сделать так, чтобы каждое наименование и цена каждого товара были в одном и том же счете?
модель моего заказа:
const CartItemSchema = new mongoose.Schema ({
product: { type: ObjectId, ref: "Product" },
name: String,
price: Number,
count: Number,
download: String,
);
const CartItem = mongoose.model("CartItem", CartItemSchema);
const OrderSchema = new mongoose.Schema ({
products: [CartItemSchema],
transaction_id: {},
amount: { type: Number },
status: {
type: String,
default: "Delivered",
},
updated: Date,
user: { type: ObjectId, ref: "User" }
);
const Order = mongoose.model("Order", OrderSchema);
module.exports = { Order, CartItem };
мой контроллер заказов
const handlebarOptions = {
viewEngine: {
extName: '.hbs',
partialsDir: 'views/bill',
layoutsDir: 'views/bill',
defaultLayout: 'bill.hbs',
},
viewPath: 'views/bill',
extName: '.hbs',
};
transporter.use('compile', hbs(handlebarOptions));
order.products.forEach(item => {
let mailOptions = {
from: '******',
to: order.user.email,
subject: 'Commande',
template: 'bill',
context: {
productname : `${item.name}`,
productprice : `${item.price}`,
},
};
transporter.sendMail(mailOptions,(err) => {
if (err) {
return res.status(500).send({
msg: err.message
});
}
res.status(200).json('A verification email has been sent to ' + user.email + '.');
});
});
})
}
мой файл hbs
<tbody>
<tr>
<td class="left strong">
{{productname}}
</td>
<td class="right">{{productprice}}</td>
<td class="right">
{{productdownload}}
</td>
</tr>
</tbody>