我在 Meteor 聊天应用程序中使用 at.js '@who提到'( https://github.com/ichord/At.js ),并希望执行以下操作:
在@who 列表中显示“用户名:名字姓氏”。
它目前仅显示用户名。
mongo 集合将 firstName 存储在 profile.firstName 中,lastName 存储在 profile.lastName 中
channel.js 中的当前代码:
setTimeout(function () {
var dbUsers = Meteor.users.find({_id: {$ne: Meteor.userId()}}).fetch();
var users = _.sortBy(dbUsers, 'username');
users = _.pluck(users, 'username');
self.$('textarea[name=message]').atwho({
at: '@',
data: users,
}).on('shown.atwho', function(event) {
setIsMentioning(true);
}).on('hidden.atwho', function(event) {
setTimeout(function() { setIsMentioning(false); }, 100);
});
}, 500);
我在 channel.js 中的新代码:
setTimeout(function () {
var dbUsers = Meteor.users.find({_id: {$ne: Meteor.userId()}}).fetch();
var users = _.map(dbUsers, function(user) { return _.pick(user, 'username', 'profile.firstName', 'profile.lastName'); });
self.$('textarea[name=message]').atwho({
at: '@',
data: users,
displayTpl: '<li>${firstName} ${lastName}, ${degree}</li>',
insertTpl: ':${username}:'
}).on('shown.atwho', function(event) {
setIsMentioning(true);
}).on('hidden.atwho', function(event) {
setTimeout(function() { setIsMentioning(false); }, 100);
});
}, 500);
这是 users.js 中用户的发布:
Meteor.publish('users', function() {
if(this.userId) { // We should only send data to logged in users.
// filter by organization
var user = Meteor.users.findOne(this.userId);
if(user.profile && user.profile.organizationId)
return Meteor.users.find(
{'profile.organizationId': user.profile.organizationId},
{fields: {'username': 1, 'emails': 1, 'status': 1, 'profile.firstName': 1, 'profile.lastName': 1}}
);
else
return Meteor.users.find({}, {fields: {'username': 1, 'emails': 1, 'status': 1}});
}
this.ready();
});
这是 routes.js 中的用户订阅:
teamRoutes = FlowRouter.group({
prefix: '/teams/:team',
middlewares: [AccountsTemplates.ensureSignedIn],
subscriptions: function(params) {
this.register('teamChannels', Meteor.subscribe('teamChannels', params.team));
this.register('teamDirectChannels', Meteor.subscribe('teamDirectChannels', params.team));
this.register('users', Meteor.subscribe('users', params.team));
this.register('teams', Meteor.subscribe('myTeams'));
this.register('reads', Meteor.subscribe('reads'));
this.register('mentions', Meteor.subscribe('mentions'));
}
});
非常感谢任何可以向我解释我做错了什么的人!非常感谢。