2 回答

TA贡献1744条经验 获得超4个赞
您可以将数组组合成一个数组并对其进行迭代,sendMail()为每个元素调用您的方法。
const users1 = [{
download: 'Release sale. 50% off!',
user: 'test1@gmail.com'
},
{
download: 'Release sale. 50% off!',
user: 'test2@gmail.com'
},
{
download: 'Release sale. 50% off!',
user: 'test3@gmail.com'
},
{
download: 'Release sale. 50% off!',
user: 'test4@gmail.com'
}
];
const users2 = [{
download: 'Test',
user: 'test5@gmail.com'
}];
const allUsers = [...users1, ...users2];
const groupedUsers = allUsers.reduce((acc, u) => {
const group = acc.find(x => x.download === u.download);
if (group) {
group.users.push(u.user);
return acc;
}
return [...acc, {
download: u.download,
users: [u.user]
}];
}, []);
console.log(groupedUsers)
使用groupedUsers上面的列表,您应该能够根据download属性向用户组发送电子邮件。
groupedUsers.forEach(async group => {
await transporter.sendMail({
from: '"Test" <noreply@test.com>',
to: group.users,
subject: "Here is your file",
text: `Here is your download: ${group.download}`
});
});
我使用了 spread ( ...) 运算符来组合数组,但concat()如果您愿意,也可以使用。const allUsers = users1.concat(users2);
添加回答
举报