获取Meteor中数组中每个人的电子邮件地址

时间:2017-02-14 19:54:46

标签: javascript arrays email meteor

我正在尝试向阵列中的每个人发送电子邮件。所以我需要每个人的电子邮件地址。我有一个人的名字和电子邮件地址的集合名为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;
    }
    }
}); 

这是我的method.js但是电子邮件功能现在不在里面,但我已经知道如何做了

Meteor.methods({
    addEvent(Name, Beschreibung, Datum, eingeladene, Autor, email) {
         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
        };

    Email.send({
        to: email, <<<-----everytime a new one 
        from: "example@email.com",
        subject: "Einladung",
        html: SSR.render('InviteEmail', emailData),
      });
        }
    });

所以,现在你知道我尝试做什么你现在可以帮助我解决两个问题首先获得电子邮件地址,然后再解决如何使用每个电子邮件地址重新启动email.send功能

1 个答案:

答案 0 :(得分:0)

请不要在没有真正评论的情况下在评论中写评论:

错误:

var eingeladene = []; <-- this is the array

更好:

var eingeladene = []; // <-- this is the array

请记住,你的eingeladene是一个数组,它什么都不返回:

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