在开始之前,我已经按照以下步骤操作: Meteor Querying other users by email
我已经阅读了有关发布用户以及如何添加比 id、用户名和配置文件更多的字段的 Meteor 文档。尽管有所有这些事情,我的情况仍然存在。
我正在尝试访问其他用户的电子邮件地址,而不仅仅是当前登录的用户。我有 2 个需要此访问权限的模板。第一个模板有效并且能够访问它。第二个模板不能。
这是我用于发布电子邮件字段和订阅的设置代码(我也尝试过不指定“地址”[例如字段:{电子邮件:1}],但结果相同)
if (Meteor.isServer) {
Meteor.publish("allUsers", function () {
return Meteor.users.find({});
});
Meteor.publish("allUserData", function () {
return Meteor.users.find({}, {fields: {"emails.address": 1}});
});
};
if (Meteor.isClient) {
Meteor.subscribe("allUsers");
Meteor.subscribe("allUserData");
};
以下是有效的模板代码:
Template.createPartner.events({
'click .setup-partner' : function(event, template) {
var partner = Meteor.users.findOne({"emails.address": 'example@mail.com' }); <-- works
}
});
这是模板中不起作用的代码:
Template.infoSelect.partnerEmail = function() {
var partnerId = Meteor.user().profile.partnerId; <-- works
var partner = Meteor.users.findOne({_id: partnerId}); <-- works but only _id and profile are returned
return partner.emails[0].address; <-- throws exception because the 'emails' field doesn't exist
};
我也试过这个,但没有区别:
var partner = Meteor.users.find({_id: partnerId}, {fields: {"emails.address": 1}});
为什么我在第二个模板中看不到用户的电子邮件地址,但在第一个模板中可以?