我希望找到所有用户,而不是当前用户。一对用户存储在" Room"此集合结构下的数组:
每个房间的结构(来自另一个html页面)
var newRoom = Rooms.insert({
owner : Meteor.userId(),
receiver : receiver,
people : [ owner , receiver ],
});
Collection.js(使用dburles集合助手)
Rooms.helpers({
receiverName: function() {
return Meteor.users.findOne({ _id: this.receiver }).username;
}
});
html
<!-- **allRooms.html** Works fine, names appear -->
{{#each rooms}} {{receiverName}}{{/each }}
<!-- **roomDetail.html** names dont show, this.receiver undefined -->
{{receiverName}}
roomDetail js模板助手
self.subscribe('room', Router.current().params._id);
self.subscribe('users');
});
如何从people
字段中返回并显示不是当前用户的用户ID?我希望在子页面(roomDetail)中显示它。
答案 0 :(得分:1)
假设:
Rooms
是一个集合,您已经有一个room
文档可供搜索。尝试一下:
// The list of userIds in room minus the current user's id.
var userIds = _.without(room.People, Meteor.userId());
// Assuming we want only one user...
var user = Meteor.users.findOne({ _id: userIds[0] });
关于原始代码的一些想法:
Rooms
是用户字段,否则您无法在Meteor.users
选择器中添加对Rooms
的引用。 Mongo没有加入的概念。$ne
不是你想要的。如果您发布了100个用户,并且您的阵列中只包含2个用户(其中一个您不想要),则使用$ne
将返回99个用户。根据您的评论,您似乎需要collection helper。也许是这样的:
Rooms.helpers({
findUser: function() {
var userIds = _.without(this.People, Meteor.userId());
return Meteor.users.findOne({ _id: userIds[0] });
},
});
然后在您的代码中的其他位置,对于您可以执行的给定room
实例:
room.findUser()