meteor:如何使关系一对多?

我正在尝试创build一个像twitter一样的追随者系统,我只想为以下用户显示post。 我不确定我的发布代码。

我有2个系列:

1- Posts { "_id": "3HrXtbHZ8WqHJJpyC", "post": " some text", "owner": "Wdc84ED9zt4Ssxsh4", "username": "MJK", "createdAt": "2016-01-28T11:53:33.253Z" } 2- Follwers { "_id": "ShKWgeaP9BFPuQWwL", "follower": "MJK", "following": "michael" } 

发布代码

 Meteor.publish('posts', function() { var user = Meteor.users.findOne({_id: this.userId}).username; var follower = Followers.find({followers: user}).following; var posts = Posts.find({username: {$in: follower}}); return posts; }); 

订阅

 Meteor.subscribe('posts'); 

客户端代码

 Template.content.helpers({ 'posts': function(){ return Posts.find({}, {sort:{createdAt: -1}}); } }); 

HTML

 {{#each posts}} <li class="collection-item avatar"> <span class="title"><a href="/{{username}}">{{posts.username}}</a></span> <p>{{time}} {{post}} {{/each}} 

但是没有post出现在浏览器中。 我认为我的发布代码是错误的。 任何人都可以帮我吗?

将您的追随者行改为:

 var follower = Followers.find({follower: user}).fetch().map(function(follower) { return follower.following; }); 

我所做的更改:

  1. 更改followers: userfollower:user因为我的追随者集合中没有看到追随者属性。
  2. find()查询之后添加fetch()以返回数组而不是游标。
  3. 使用.map()将您的对象数组转换为一个用户名string数组,以提供给post。