我在Meteor中使用用户系统。会计是使用电子邮件创建的,但我希望为用户提供在其设置中设置唯一用户名的选项。
我有这条路线
Router.route('userProfile', {
path: '/users/:userId',
template: 'userProfile',
fastRender: true,
waitOn: function() {
return Meteor.subscribe('singleUser', this.params.userId);
},
data: function() {
return {
user: Meteor.users.findOne(this.params.userId)
};
}
});
但如果用户设置了他/她的用户名,则路径路径应为path: '/:username',
。我认为这就是Facebook,LinkedIn等也是如此。
答案 0 :(得分:0)
只需选择单个参数并在您的出版物和数据函数中进行检查:
Meteor.publish('singleUser', function (userIdOrName) {
return Meteor.users.find({ $or: [ { _id: userIdOrName }, { username: userIdOrName } ] }, {limit: 1});
});
Router.route('userProfile', {
path: '/users/:userIdOrName',
template: 'userProfile',
fastRender: true,
waitOn: function() {
return Meteor.subscribe('singleUser', this.params.userIdOrName);
},
data: function() {
return {
user: Meteor.users.findOne({ $or: [ { _id: this.params.userIdOrName }, { username: this.params.userIdOrName } ] })
};
}
});
请注意,在这种情况下,您应确保用户无法将其他人的ID设置为其用户名,否则他/她可能会冒充此人。