【发布时间】:2017-11-03 20:54:21
【问题描述】:
我有 3 个集合,meteor.user()、Categories 和 Posts。
用户可以通过将类别的id保存在meteor.user()的数组中来选择关注任何类别的帖子
这样做的最终目标是用户拥有一个个人信息流,其中仅显示他们关注的类别中的帖子。
Posts collection 中的每个帖子都包含一个包含其特色的类别的数组。
每个类别中都有一个帖子数组,数组中的每个帖子都有一个帖子的ID字段。
其中id: 67 是类别的ID,posts.ID: 74 是类别中帖子的ID。
下面是 Posts 集合中帖子的 ID,与类别集合中的 posts.ID 匹配
用户保存一个类别 id,因此它在meteor.user() 中显示为类别数组
当我这样做时
Template.userTimeline.helpers({
category: function() {
var posts = Category.find({
id: {
$in: Meteor.user().category
}
});
return posts
console.log(posts);
}
});
我能做到
{{#each category}}
<ul class="article-timeline">
{{#each posts}} {{ID}} {{/each}}
</ul>
{{/each}}
但这让我可以访问类别集合中的 posts.ID 并显示它。
问题
我怎样才能更进一步,将我使用上述代码获得的 posts.ID 与 Post 中的帖子 ID 进行匹配,以便我可以访问 Posts 集合中的帖子。我可以这样做吗?
Template.userTimeline.helpers({
category: function() {
var postsInCategory = Category.find({
id: {
$in: Meteor.user().category
}
});
var postMatch = Post.find({
ID: {
$in: postsInCategory
}
});
return postMatch
console.log(postMatch);
}
});
ZIM 回答后的进一步编辑
所以您给我的解决方案是从我的Categories 集合中包含 的帖子对象中获取post.title,如下所示。
Category collection 中的这个 post 数组不完整,它是原始 Posts Collection 的副本
我需要做的是使用post.ID,如上图所示。即类别集合中的帖子数组,以创建与原始Posts 集合中帖子的id 的多对多关系,所以我需要拥有post.title title.rendered 如下。
帖子集合。
如果您看到 ID(不是顶部 id,即类别的 id),则 Categories 集合中 post 数组中的 post.ID 与 @987654359 是 IDENTICAL @Posts 收藏中的帖子。这是这一切的症结所在,帮我建立一个关系,这样,我需要显示@987654364,而不是显示Categories集合中的帖子数组内中的title或post.title @在原Posts集合内。
【问题讨论】:
-
我谦虚地建议您将整个架构放入不同的集合中。所有数据都会暴露在客户端,这是非常危险的。您宁愿制作各自的集合,然后制作一个公共字段来映射每个条目。你真的不需要让事情变得如此复杂,因为内部关系可以像这样解决 -> stackoverflow.com/questions/44203584/… 你可以在帮助程序和订阅的帮助下简单地在模板内循环数据。
-
您好,感谢您的回复。 @AnkurSoni 这很复杂,我还没有定义模式,数据是通过 json 作为 WordPress 发布的。 Hense 为什么我要这样做。
-
您的问题是什么? :)
-
我怎样才能将类别集合中的posts.ID与其在Posts中的完全匹配(即帖子ID)匹配,而不是在模板中显示posts.ID,这样,而不是显示来自类别集合的帖子数据,我可以通过匹配 ID @AnkurSoni 显示来自帖子本身的数据
-
我已经给你链接了。看看答案。它解释了你刚才问的一切。保持冷静,放松并阅读答案。我也曾经有过这个问题,解决方法很简单。
标签: javascript meteor meteor-collections