Javascript Meteor:通过“关系发布”的被动连接-包

Javascript Meteor:通过“关系发布”的被动连接-包,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我的Meteor项目中有以下数据结构: -具有属于用户作者的一组列表ID的用户 -实际包含列表所有数据的列表,以及允许查看该列表的一组用户ID和所有者 现在,我正尝试使用publish with relations包将用户的所有列表发布到客户端。下面是一个简单的例子: 列表=新流星。收集列表; 如果Meteor.isClient{ 副自动解除功能{ 如果Meteor.userId{ 流星群; } }; Template.hello.greeting=函数{ 回归试验; }; Template.h

我的Meteor项目中有以下数据结构: -具有属于用户作者的一组列表ID的用户 -实际包含列表所有数据的列表,以及允许查看该列表的一组用户ID和所有者

现在,我正尝试使用publish with relations包将用户的所有列表发布到客户端。下面是一个简单的例子:

列表=新流星。收集列表; 如果Meteor.isClient{ 副自动解除功能{ 如果Meteor.userId{ 流星群; } }; Template.hello.greeting=函数{ 回归试验; }; Template.hello.events{ “单击输入”:函数{ 如果控制台的类型!=“未定义” console.loglist.find; } }; } 如果Meteor.isServer{ 流星函数{ 如果Meteor.users.find.count==0{ var user=Accounts.createUser{//创建新用户 用户名:“测试”, 电邮:'test@test.com', 密码:“测试” }; //将列表添加到列表,并将列表的id添加到用户 var listid=new Meteor.Collection.ObjectID.valueOf; Meteor.users.updateuser.\u id,{$addToSet:{lists:listid}; 插入{{u id:listid,数据:'content',所有者:user.\u id}; } }; Meteor.publish'List',functionid{ 流星与关系{ 句柄:这个,, 收藏:列表, 筛选器:\u id, 映射:[{ 关键字:“列表”, 收藏:Meteor.users }] }; }; Meteor.Publish用户、功能{ 返回Meteor.users.find{u id:this.userId}; }; //目前一切都是允许的 列表。允许{ 插入:functionuserID { 返回true; }, 更新:functionuserID { 返回true; }, 删除:functionuserID { 返回true; } }; } 发布不起作用,并且光标不包含已启动的列表元素


你知道如何修复这个被动连接来发布某个用户的列表吗?提前感谢,感谢您的帮助

未正确插入测试数据。再看看我对你的问题的解决方案。关键区别在于Accounts.createUser返回的是一个id,而不是一个对象

无论如何,PWR有点混乱,但我认为正确的方法是发布用户,然后将列表作为关系发布。尽管每个列表文档似乎都有一个所有者,但我假设目标是在用户的列表数组中发布所有列表文档


尝试一下,如果遇到问题,请告诉我。

您的测试数据没有正确插入。再看看我对你的问题的解决方案。关键区别在于Accounts.createUser返回的是一个id,而不是一个对象

无论如何,PWR有点混乱,但我认为正确的方法是发布用户,然后将列表作为关系发布。尽管每个列表文档似乎都有一个所有者,但我假设目标是在用户的列表数组中发布所有列表文档

试试看,如果你遇到问题就告诉我

Meteor.publish('lists', function() {
  Meteor.publishWithRelations({
    handle: this,
    collection: Meteor.users,
    filter: this.userId,
    mappings: [{
      key: 'lists',
      collection: Lists
    }]
  });
});