Javascript 获取Meteor阵列中每个人的电子邮件地址
我正在尝试向数组中的每个人发送电子邮件。所以我需要每个人的电子邮件地址。我有一个名为Benutzer/Benutzer的收藏,收藏的人的名字和电子邮件地址 以下是我在客户机上的代码:Javascript 获取Meteor阵列中每个人的电子邮件地址,javascript,arrays,email,meteor,Javascript,Arrays,Email,Meteor,我正在尝试向数组中的每个人发送电子邮件。所以我需要每个人的电子邮件地址。我有一个名为Benutzer/Benutzer的收藏,收藏的人的名字和电子邮件地址 以下是我在客户机上的代码: Template.NeuesEvent.onCreated(function() { this.subscribe('events'); this.subscribe('friends'); this.subscribe('benutzer'); }); Template.NeuesEve
Template.NeuesEvent.onCreated(function() {
this.subscribe('events');
this.subscribe('friends');
this.subscribe('benutzer');
});
Template.NeuesEvent.events({
"submit .add-event": function(event){
var Name = event.target.name.value;
var Beschreibung = event.target.beschreibung.value;
var Datum = event.target.Datum.value;
var Autor = Meteor.userId();
var eingeladene = []; <-- this is the array
$.each($('.FreundeCheckbox:checked'), function(){
eingeladene.push($(this).val());
});
var email = Meteor.Benutzer.findOne({"email": eingeladene});<<------
<<---- here i want to grab the email adress
if (Name == "")
{
confirm("Das Event braucht einen Namen ;)")
}
else {
Meteor.call('addEvent', Name, Beschreibung, Datum, eingeladene, Autor, email) <<--
<<------and paste the information here
event.target.name.value = "";
event.target.beschreibung.value = "";
FlowRouter.go('/meineEvents');
return false;
}
}
});
Template.neueEvent.onCreate(函数(){
本协议。订阅(“事件”);
这个。订阅(“朋友”);
本协议。认购(“benutzer”);
});
Template.neueEvent.events({
“提交.添加事件”:函数(事件){
var Name=event.target.Name.value;
var Beschreibung=event.target.Beschreibung.value;
var Datum=事件.目标.数据.值;
var Autor=Meteor.userId();
var eingeladene=[];请不要在没有真正注释的情况下将注释写入代码:
错误:
var eingeladene = []; // <-- this is the array
var eingeladene=[];我建议您在客户端上只使用\u id
s。将用户\u id
s数组传递给Meteor.call(),让服务器查找用户并提取其电子邮件地址。这将避免向客户端公开其他用户电子邮件地址(更安全)并将减少操作的延迟。不要忘记在方法中调用this.unblock()
,以避免该方法阻止其他请求。非常感谢它的帮助;)但当我测试它以查找电子邮件地址时,我得到错误:无法读取未定义的属性“findOne”,并且internet没有告诉我解决方案;(你说的“真的去拿邮件”是什么意思?我什么都没拿,还是我错了?对不起,我在第一条评论里忘了@iiro@Michael很难说。Perhas您应该导入一些文件,Meteor.Benutzer.defined在哪里?我通常将集合定义放在/lib目录中,以便客户端和服务器看到它们。Benutzer=new Meteor.Col选择('benutzer');稍后…benutzer.findOne(…)是的,它已经在lib文件夹中,现在我也找到了密钥。谢谢您的帮助;)@iiro@Michael好的,太好了!那么你应该接受答案,我可以修改。你做了什么让它工作?
var eingeladene = []; // <-- this is the array
var email = Meteor.Benutzer.findOne({"email": eingeladene});
var email = Meteor.Benutzer.findOne({"email": {$in: eingeladene}});
Template.NeuesEvent.events({
"submit .add-event": function(event){
var Name = event.target.name.value;
var Beschreibung = event.target.beschreibung.value;
var Datum = event.target.Datum.value;
var Autor = Meteor.userId();
var eingeladene = [];
$.each($('.FreundeCheckbox:checked'), function(){
eingeladene.push($(this).val());
});
// we dont't need email yet
if (Name == "")
{
confirm("Das Event braucht einen Namen ;)")
}
else {
// removed Autor and email here, since we don't need it
Meteor.call('addEvent', Name, Beschreibung, Datum, eingeladene);
event.target.name.value = "";
event.target.beschreibung.value = "";
FlowRouter.go('/meineEvents');
return false;
}
}
});
Meteor.methods({
'addEvent': function(Name, Beschreibung, Datum, eingeladene) {
this.unblock();
var Autor = Meteor.users.findOne(this.userId);
Events.insert({
Name: Name,
Beschreibung: Beschreibung,
erstelltAm: new Date(),
Datum: Datum,
Eingeladen: eingeladene,
Autor: Autor
});
SSR.compileTemplate('InviteEmail', Assets.getText('Invite-Email.html'));
var emailData = {
Name: Name,
Beschreibung: Beschreibung,
erstelltAm: new Date(),
Datum: Datum,
Eingeladen: eingeladene,
Autor: Autor
};
// do you really need the fetch emails from the collection?
for (var i in eingeladene) {
var email = Meteor.Benutzer.findOne({"email": eingeladene[i]});
if (!email) {
continue;
}
Email.send({
to: email, <<<-----everytime a new one
from: "example@email.com",
subject: "Einladung",
html: SSR.render('InviteEmail', emailData),
});
}
}
});