无法使用 switch 语句发送电子邮件

Cannot send email using switch statement

我正在使用 node mailer 发送电子邮件并遵循了 youtube 教程,但我做了一些更改。我希望用户向 he/she 将选择的 31 个人中的任何一个发送电子邮件,因此我们将分配给被选择的人的号码称为 classNum。

当我将电子邮件分配给 to 参数时,代码有效,但如果我删除它并使用 switch 语句,它会给出 500 错误。

const sendMail = (email, subject, text,classNum, cb) => {
const mailOptions = {
  from: email,
  subject,
  text,
  to: " "
};
switch(classNum) {
  case 25:  
    mailOptions.to = 'thisIsAnEmail@gmail.com'          
    break;
}

这可能是有问题的代码块,请告诉我是否需要 add/post 来自源代码的更多代码。

switch 表达式使用 strict equality

根据我在评论中要求的调试信息,您正在传递一个字符串并将其与一个数字进行比较。所以 "25" === 25 是假的。

你要么把它变成一个字符串

switch(classNum) {
  case "25": 

或将 classNum 转换为数字

switch(Number(classNum)) {
  case 25: 

正如@epascarello 指出的那样,您在 classNum 中有一个字符串,而不是数字;结果,您的“案例”不匹配。您可以通过以下两种方式之一解决此问题:

  1. 使用 classNum = Number(classNum); 确保 classNum 是一个数字,而不是一个字符串(可能更好,因为 classNum 在变量名中暗示了一个数字);或者
  2. 将您的 switch case 更改为字符串:case '25':

我认为选项 1 可能更好,同样是因为变量名称暗示了一个数字值。