如何在 for 循环中使用 I-Value

How to use I-Value in for-loop

嗨,我正在玩 javascript 和 firebase,但 运行 遇到了问题。

我想在创建数据库条目后向我的数据库中列出的每个电子邮件发送相同的电子邮件:

如果我使用没有 for 循环的代码一切正常:

to: snap.data().email,

我尝试了几种使用 i 值作为参数的方法 - 下面的代码中有一种不起作用:

to: snap.data().email.concat(i.toString()),
exports.sendEmail = functions.firestore
    .document('user/{userId}')
    .onCreate((snap, context) => {

      for(var i = 1; i <= snap.data().number; i++) {
        const mailOptions = {

            from: `***********`,
            to: snap.data().email.concat(i.toString()),
            subject: `From ${snap.data().name}`,
            html: `<h1>Me ${snap.data().name} </h1>
                                <p>
                                   <b>Hallo - </b>${snap.data().content}<br>
                                </p>`
      };
      return transporter.sendMail(mailOptions, (error, data) => {
          if (error) {
              console.log(error)
              return
          }
          console.log("sent")
      });
    };

    });

如果你能帮助我,我将不胜感激:-)

如果你想得到 email1, 和 email2 , ... 属性,你可以按照下面的方式做

to: snap.data()['email'+i],

为了获得更好的代码,您可以将 snap.data() 存储到变量中,例如

const data = snap.data();

并像

一样反复使用它
to: data['email'+i]

你的循环中还有 return,这意味着在第一个循环之后它将退出循环

建议

您可以将电子邮件存储为一个数组,而不是一个一个地存储,然后您可以简单地循环并发送电子邮件,而且您不需要数字,所以您的数据形状会像

{
  content: string;
  name: string;
  emails: string[];
}