始める前に、次の手順に従いました: Meteor メールで他のユーザーに問い合わせる
また、ユーザーの公開と、ID、ユーザー名、およびプロファイル以外のフィールドを追加する方法に関する Meteor のドキュメントを読みました。これらすべてにもかかわらず、私の状況は存在します。
現在ログインしているユーザー以外のユーザーの電子メール アドレスにアクセスしようとしています。このアクセスが必要なテンプレートが 2 つあります。最初のテンプレートは機能し、アクセスできます。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}});
2 番目のテンプレートではユーザーのメール アドレスが表示されないのに、最初のテンプレートでは表示されるのはなぜですか?