Javascript 获取Meteor阵列中每个人的电子邮件地址

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

我正在尝试向数组中的每个人发送电子邮件。所以我需要每个人的电子邮件地址。我有一个名为Benutzer/Benutzer的收藏,收藏的人的名字和电子邮件地址

以下是我在客户机上的代码:

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),
            });
        }
    }
});