通过单击meteor.js获取对象_id

时间:2016-04-05 16:03:44

标签: meteor routing


这是我的问题:我想尝试处理流星上的帖子,所以我创建了帖子模式和创建它们的方法。然后我想查看用户创建的所有帖子,所以我在视图中列出了它们。但现在我想通过该列表找到一个特定的帖子。它与我们在“你的第二个流星应用程序”中所做的完全相同,但它不起作用......

  • 以下是我的路由器:
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解决问题。

1 个答案:

答案 0 :(得分:1)

要尝试两件事,首先要在网址中使用_id,您需要在数据中使用this.params._id而不是id,其次只是直接返回findOne,而不是将其设置为data.posts

data: function(){ 
    return Posts.findOne({_id:this.params._id});
}