【问题标题】:Meteor : how to make Relationships one to many?流星:如何建立一对多的关系?
【发布时间】:2016-01-30 01:24:22
【问题描述】:

我正在尝试创建一个像 twitter 这样的追随者系统,并且我只想为关注的用户显示帖子。 我不确定我的发布代码。

我有 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}}

但没有帖子出现在浏览器中。 我认为我的发布代码是错误的。谁能帮帮我?

【问题讨论】:

    标签: javascript node.js meteor relationships


    【解决方案1】:

    将您的关注者行更改为:

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

    我所做的更改:

    1. 已将 followers: user 更改为 follower:user,因为我在您的 Followers 集合中没有看到 Followers 属性。
    2. find() 查询之后添加了 fetch() 以返回数组而不是游标。
    3. 使用 .map() 将您的对象数组转换为用户名字符串数组以提供给帖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 2014-11-22
      相关资源
      最近更新 更多