如何检索助手或事件中的对象的内部_id?

问题描述:

我正在尝试添加评论,并且它有一个{postId}字段。目前,我会返回帖子ID,将它添加到评论集合var id = FlowRouter.getParam('id');,因为我的路由包含特定帖子的ID,我将在参数中留言。现在我想改变路线,而不是myapp.com/posts/:id myapp.com/post/:title,所以我不能从param得到id ....我仍然可以得到ID在路由器参数中不再可用的帖子?如何检索助手或事件中的对象的内部_id?

所以现在我的事件代码:

Template.post.events({ 
    "click #submitComment": function() { 
     var commentText = $("#commentfield").val(); 
    var postId = FlowRouter.getParam('id');` 
    Comments.insert({postId: postId, comment: commentText}); 
    } 

}) 

我记得其他应用程序我用类似template.data._id但我不能得到那个工作

这个问题也是我的助手和订阅,我总是需要获取模板的特定帖子,评论,视频ID ......但需要找到一种方法,因为我不希望我所有的路线都包含这些ID。 感谢

你缺少模板变量传递到单击事件:

"click #submitComment" : function (event, template) { .... 

通知的(event, template)。现在,请按照您的建议使用template.data._id

+0

谢谢Nate,但仍然无法正常工作,它不会提供任何错误,但它不会将template.data._id添加到集合中。我试过类似的东西:“\t”click# buttonData “:功能(事件,模板){ \t \t \t \t变种ID = template.data._id; \t \t \t \t Comments.insert({帖子ID:ID,}); \t \t \t},” – Adam

+0

记录'template.data'会给你什么。 'console.log(template.data)' – Nate

+0

模板未定义....检索我的应用程序中的模板我正在使用{{#with posts}} {{with}}并且帮助程序是返回var id = FlowRouter.getParam( 'ID'); 然后返回Posts.findOne({_ id:id}) – Adam

如果我正确地理解了这一点,那么您就改变了从发帖的ID改为具有标题字段的路线。它也看起来像你知道关于#with。既然你帮手名为posts,这里是一些示例代码,我认为应该工作:

Template.post.helpers({ 
    posts() { 
     var post = Posts.findOne({title: FlowRouter.getParam('title')}); 
     if(post) { 
      return post; 
     } 
    } 
}); 

我相信,那么,您的活动代码保持不变。