我正在尝试收集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
自己的功能实现这一点,还是必须单独对阵列进行操作?
答案 0 :(得分:1)
您可以使用名为map
(reference)的underscore.js中的函数:
var emails = _.map(Meteor.users.find({}, {fields: {'profile.email': 1, _id:0}}).fetch(), function(user) {
return user.profile.email;
});
甚至更短pluck
(reference):
var emails = _.pluck(Meteor.users.find({}, {fields: {'profile.email': 1, _id:0}}).fetch(), 'profile.email');
他们将迭代结果并生成一个包含所需数据的数组
答案 1 :(得分:1)