这是我的问题:我想尝试处理流星上的帖子,所以我创建了帖子模式和创建它们的方法。然后我想查看用户创建的所有帖子,所以我在视图中列出了它们。但现在我想通过该列表找到一个特定的帖子。它与我们在“你的第二个流星应用程序”中所做的完全相同,但它不起作用......
Router.route('/posts', {
name: "posts",
data: function(){
var posts = Posts.find();
return {
posts: posts
};
},
waitOn: function(){
return Meteor.subscribe("userPosts",Meteor.user().username);
}
});
Router.route('/post/:_id', {
name: "post",
data: function(){
return {
posts: posts = Posts.findOne({_id:id})
};
},
waitOn: function(){
return Meteor.subscribe("userPosts",Meteor.user().username);
}
});
<template name='posts'>
<h3>Nouveau post</h3>
<form>
<label>Titre</label><input type="text" name="titre" /><br />
<label>Contenu</label><textarea name="contenu" ></textarea><br />
<button type="submit" >Envoyer</button>
</form>
<h3>Posts list</h3>
<ul>
{{#each posts}}
<li><a href="/post/{{_id}}">{{ title }}</a></li>
{{/each}}
</ul>
</template>
<template name='post'>
<h2>Here is your post:</h2>
<div>
<p>{{title}} , by {{author}}</p>
<p>{{content}}</p>
</div>
</template>
我得到类似的东西:
这是你的帖子:
,按
希望你们能帮助我,谢谢。
感谢Philip解决问题。
答案 0 :(得分:1)
要尝试两件事,首先要在网址中使用_id,您需要在数据中使用this.params._id
而不是id
,其次只是直接返回findOne,而不是将其设置为data.posts
data: function(){
return Posts.findOne({_id:this.params._id});
}