如何检索助手或事件中的对象的内部_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
。
答
如果我正确地理解了这一点,那么您就改变了从发帖的ID改为具有标题字段的路线。它也看起来像你知道关于#with。既然你帮手名为posts
,这里是一些示例代码,我认为应该工作:
Template.post.helpers({
posts() {
var post = Posts.findOne({title: FlowRouter.getParam('title')});
if(post) {
return post;
}
}
});
我相信,那么,您的活动代码保持不变。
谢谢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
记录'template.data'会给你什么。 'console.log(template.data)' – Nate
模板未定义....检索我的应用程序中的模板我正在使用{{#with posts}} {{with}}并且帮助程序是返回var id = FlowRouter.getParam( 'ID'); 然后返回Posts.findOne({_ id:id}) – Adam