【问题标题】:Find for every name in array some user data out of another collection in Meteor从 Meteor 的另一个集合中为数组中的每个名称查找一些用户数据
【发布时间】:2017-07-07 14:38:08
【问题描述】:

嗨,伙计们,我正在尝试为数组“eingeladene”中的每个名称获取电子邮件地址“Vorname”和“Nachname”我有一个 for 循环一遍又一遍,但我的发现输出的是“null” ;(所以我的发现无法正常工作我有两个集合,一个名为“Events”,其中数组位于内部,集合“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"

希望你现在可以帮助我;)

【问题讨论】:

  • Das Ende des Comments */ist absichtlich da?
  • 不,不,不,不,不,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,。

标签: javascript arrays email meteor


【解决方案1】:

我注意到的一件事是错误的 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

【讨论】:

  • 是的,试过了,问题是在变量 email 中保存了整个用户数据,而不仅仅是电子邮件地址;(但谢谢
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
相关资源
最近更新 更多