2017-02-17 1 views
0

Привет, ребята Я пытаюсь получить за каждое имя в массиве «eingeladene» адрес электронной почты «Vorname» и «Nachname» у меня есть для цикл, чтобы переходить снова и снова, но моя находка выводит «null»; (поэтому моя находка работает неправильно. У меня есть две коллекции, одна из которых называется «События», где массив находится внутри и в коллекции «Benutzer» - это данные пользователя я хочу получить.Найти для каждого имени в массиве некоторые пользовательские данные из другой коллекции в Meteor

в массиве «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: "[email protected]", 
     subject: "Einladung", 
     html: SSR.render('EinladungsEmail', emailData), 
    }); 

} 

Спасибо за каждую помощь и да я уже красной документацию Кстати @iiro помог мне получить до сего пор

Update: Я попытался с тем же кодом и проверить сформированные данные, которые я вставил данные в другая коллекция, и я был неправ, что не «нулевой» я теперь получаю это:

{ 
    "_id": "HDF3XnvKzovnNdEiW", 

    "Email": { 
    "_id": "Gkddi6KhYf6BmF3jv", 
    "email": "[email protected]" 
    }, 
    "Vorname": { 
    "_id": "Gkddi6KhYf6BmF3jv", 
    "Vorname": "exampleVorname" 
    }, 
    "Nachname": { 
    "_id": "Gkddi6KhYf6BmF3jv", 
    "Nachname": "exampleNachname" 
    } 
} 

Проблема с этим состоит в том, что для каждой части идентификатор вставляется с данными

Моя цель была бы это

"Email": "[email protected]" 

Надеется, что вы можете мне помочь;)

+0

Das Ende des Комментарии '* /' ist absichtlich da? – baao

+0

nope ist es nicht habe es vergessen raus zu machen;) – Michael

ответ

1

Одна вещи, я заметил, это неправильно ваш синтаксис findOne.

Вы не укажете «поля» в объекте.

Если вы хотите просто электронная почта:

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

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


Edit: К сожалению, только что понял, что это не очень эффективный способ сделать то, что вы пытаетесь сделать, и у вас есть некоторые проблемы синтаксиса.

Лучшее решение с тем же результатом:

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: "[email protected]", 
    ... 
}); 

Создание другой MongoDB безумно неэффективна, когда первый вызов возвратит все значения вам нужно.

Также имена переменных должны быть camelCased. Это будет чрезвычайно полезно для чтения. Возможно, зайдите в https://google.github.io/styleguide/jsguide.html, если вы начинаете.

Я бы также рекомендовал пройти этот урок, а на самом деле прописать его! https://www.meteor.com/tutorials/blaze/creating-an-app

+0

да проверено, проблема в том, что в переменной электронной почты сохраняются все данные пользователя, а не только адрес электронной почты; (но спасибо – Michael

+0

wuhu это было решение спасибо вы ;) – Michael