Meteor发布中通过id链接用户
Linking users by id in Meteor publish
我有一个mongo文档,格式如下:
Group: {
participants: [
userId,
userId,
userId
]
}
其中userId显然是Meteor自己的用户文档的ObjectId。
我真正遇到的问题是,我希望用户查看他们组中的其他用户信息。在这个实现中,我设想了一个安全的(读作:我删除了自动发布和不安全的)组消息传递系统。
我当前的发布实现如下所示:
//grab all groups user belongs to
Meteor.publish("groups", function() {
var groups = Groups.find({
participants: {
$in: [ this.userId ]
}
});
return groups;
});
现在,理想情况下,我只想在完成发布groups
之前实现一些代码来操作它,以便同时发布每个参与者的user.profile
数据。设想的最终格式如下:
Group: {
participants: {
userId
},
users: {
{ //One of these for each user
userId,
firstName,
lastName,
otherData
}
}
}
我注意到的一件事是,如果没有自动发布和不安全性,我就不能通过助手函数在客户端上完成这项工作。
这是reywood:publish复合包的一个相当简单的用例
Meteor.publishComposite('groups', {
find: function() {
return Groups.find({ participants: { $in: this.userId }});
},
children: [
{
find: function(group) {
return Meteor.users.find(
{ _id: { $in: group.participants },
{ fields: { firstName: 1, lastName: 1, otherData: 1 }});
}
},
]
});
请注意,用户的_id
字段始终包含在内,不需要在fields:
列表中显式调用它。
相关文章:
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- Facebook共享链接适用于用户,但不适用于粉丝页面管理员
- 使用用户输入修改链接
- 如何防止用户使用javascript或jquery在链接中单击鼠标中键
- 将链接保存到用户'的PC
- reactJs redux:如何对用户事件调度操作并将操作与化简器和存储链接
- 如何区分用户单击链接和在 UIWebView 中执行自动重定向的页面
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 如何在 Angular 中将锚标记与模态链接,以便用户登录
- 如何在用户提交链接时添加提取推文并将其发布到站点的功能
- 下一个/上一个锚链接,如何在用户滚动时更新下一个/上一个链接
- 如何将链接状态设置为在用户访问另一个页面之前保持
- 是否可以超链接嵌入的视频框,这样当用户点击视频时,就会显示超链接
- 当用户单击时,在新选项卡中打开链接
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 更新用户's使用PHP或JavaScript链接
- 如何检测用户点击了内部或外部链接
- NodeJS+JS:根据当前用户选择生成动态链接
- 根据用户从jQuery UI可选下拉框中选择的内容创建链接
- Meteor发布中通过id链接用户