Meteor.users.findOne()
退回了我的用户文档。
Meteor.users.findOne({_id: 'my ID'})
退回了我的用户文档。
Meteor.users.findOne({_id: 'another users's ID'})
让我回到了未完成状态。
这明显受到安全限制。但是如何访问其他用户的帐户详细信息,例如_id,姓名,个人资料等?
答案 0 :(得分:3)
您需要为该用户添加发布商。这是一个例子:
// The user fields we are willing to publish.
const USER_FIELDS = {
username: 1,
emails: 1,
};
Meteor.publish('singleUser', function (userId) {
// Make sure userId is a string.
check(userId, String);
// Publish a single user - make sure only allowed fields are sent.
return Meteor.users.find(userId, { fields: USER_FIELDS });
});
然后在客户端上,你可以subscribe这样:
Metor.subscribe('singleUser', userId);
或使用template subscription这样:
this.subscribe('singleUser', userId);
安全说明:
check
您的发布商或客户的论据可能会导致{}
传递userId
等错误内容。如果您收到错误,请确保meteor add check
。fields
选项。否则你会发布他们所有的秘密。请参阅common mistakes的“已发布的秘密”部分。答案 1 :(得分:2)
在服务器上运行它,如下所示:
服务器:
Meteor.publish("otherUsers", function (userID) {
return Meteor.users.findOne({_id: userID});
});
客户端:
Meteor.subscribe("otherUsers", <userIdYouWantToGetDetailsFor>);
然后您可以在客户端上执行Meteor.users.findOne 请记住,您只能为您的用户和您在流星订阅中传递的用户ID