嗨,大家好,我试图为数组“ eingeladene”中的每个名称获取电子邮件地址“ Vorname”和“ Nachname”,我有一个for循环,要一遍又一遍,但是我的输出是“ null”;(所以我的发现无法正常工作我有两个集合,一个名为“事件”,其中的数组位于其中,在集合“ Benutzer”中,是我想要获取的用户数据。

在数组中插入了“ Vorname”,因此我正在搜索具有该名称(“ Vorname”)的用户,然后获取电子邮件+“ Nachname”

for (var i in eingeladene) {

    var email = Benutzer.findOne({"Vorname": eingeladene[i]}, {fields: {email: 1}});
    var Vorname = Benutzer.findOne({"Vorname": eingeladene[i]}, {fields: {Vorname: 1}});
    var Nachname = Benutzer.findOne({"Vorname": eingeladene[i]}, {fields: {Nachname: 1}});
*/

    if (! email) {
        continue;
    }

    var emailData = {
        Name: Name,
        Beschreibung: Beschreibung,
        erstelltAm: new Date(),
        Datum: Datum,
        Eingeladen: eingeladene,
        Autor: Autor,
        Einladender: Einladender
    };

    Email.send({
        to: "email",
        from: "example@gmail.com",
        subject: "Einladung",
        html: SSR.render('EinladungsEmail', emailData),
    });

}


感谢您提供的所有帮助,是的,我已经将文档改成红色
顺便说一句,@ iiro帮助我走了很远

更新:我尝试使用相同的代码,并检查生成的数据,然后将数据插入另一个集合中,但我错了,这不是“ null”,我现在得到这个:

{
  "_id": "HDF3XnvKzovnNdEiW",

  "Email": {
    "_id": "Gkddi6KhYf6BmF3jv",
    "email": "examplemail@gmail.com"
  },
  "Vorname": {
    "_id": "Gkddi6KhYf6BmF3jv",
    "Vorname": "exampleVorname"
  },
  "Nachname": {
    "_id": "Gkddi6KhYf6BmF3jv",
    "Nachname": "exampleNachname"
  }
}


问题在于,对于每个零件,id都随数据一起插入

我的目标是

"Email": "examplemail@gmail.com"


希望你能现在帮助我;)

最佳答案

我注意到的一件事是错误的是您的findOne语法。

您无需在对象中指定“字段”。

如果您只想发送电子邮件:

Benutzer.findOne({Vorname: eingeladene[i]}, {email: 1});


https://docs.mongodb.com/manual/reference/method/db.collection.findOne/



编辑:对不起,您刚刚意识到这不是一种非常有效的方式来执行您要执行的操作,并且您有一些语法问题。

具有相同结果的更好的解决方案:

var obj = Benutzer.findOne({'vorname': eingeladene[i]}, {});

var emailData = {
    name: obj.name,
    beschreibung: obj.beschreibung,
    erstelltAm: new Date(),
    datum: obj.datum,
    eingeladen: obj.eingeladene,
    autor: obj.autor,
    einladender: obj.einladender
};

Email.send({
    to: obj.email,
    from: "example@gmail.com",
    ...
});


当第一个调用将返回您需要的所有值时,创建不同的MongoDB效率极低。

同样,变量名也应使用驼峰式。它将大大提高可读性。如果您是刚开始,请检查https://google.github.io/styleguide/jsguide.html

我也强烈建议您同时阅读本教程,并实际编写出来! https://www.meteor.com/tutorials/blaze/creating-an-app

07-24 17:45
查看更多