嗨,大家好,我试图为数组“ 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