Meteor查找所有用户的电子邮件

时间:2015-05-28 19:53:20

标签: javascript email meteor

我正在尝试收集Meteor服务器功能上的所有用户电子邮件(发送给所有活动的人)。我已经尝试过很多结构并且已经完成了这个:

/server/lib/mail/mailNewEvent.js

Meteor.users.find({}, {transform: function(doc) {return doc.profile}}).fetch();

返回:

[ { name: 'Tardar',
    email: 'rsartsnie@eintrs.com',
    _id: 'YyEk2sLDiQoBjC6gS' },
  { name: 'Chutney',
    email: 'rstrtsrtsnie@eintrs.com',
    _id: '4Dyaa5wRmxmq7j7XF' } ]

我尝试更改上面的transform以返回电子邮件字段:

return doc.profile.email

但是:"Transform functions must return an object"并且提供了一个变量。

我也尝试过:

Meteor.users.find({}, {fields: {'profile.email': 1, _id:0}}).fetch();

返回:

[ { profile: { email: 'rsartsnie@eintrs.com' } },
  { profile: { email: 'rstrtsrtsnie@eintrs.com' } } ]

我可以使用find自己的功能实现这一点,还是必须单独对阵列进行操作?

2 个答案:

答案 0 :(得分:1)

您可以使用名为mapreference)的underscore.js中的函数:

var emails = _.map(Meteor.users.find({}, {fields: {'profile.email': 1, _id:0}}).fetch(), function(user) {
    return user.profile.email;
});

甚至更短pluckreference):

var emails = _.pluck(Meteor.users.find({}, {fields: {'profile.email': 1, _id:0}}).fetch(), 'profile.email');

他们将迭代结果并生成一个包含所需数据的数组

答案 1 :(得分:1)

你试过这个:

Meteor.users.find({}).map(function(user){
   return user.profile.email
})

Documentation