在this page,我看到此代码:
post._id = Posts.insert(post);
Router.go('postPage', post);
...根据_id值加载页面。
这真的应该是,还是应该这样:
var id = Posts.insert(post);
Router.go('postPage', id);
?
IOW,为什么在需要的全部是id时传递整个对象,该ID是从insert函数返回的(引用到上面链接的页面,“ Lafuncióninsert()devuelve el identificador _id del objeto que se ha insertado en la base de datos“)?
即使显示的方式有效(路由器足够智能以提取ID),“我的方式”也不更好(即使我不是Sinatra)?
您是正确的。您引用的博客文章中的示例代码甚至无法使用。
Router.route('/posts/:_id', {
name: 'postPage',
data: function() { return Posts.findOne(this.params._id); }
});
作为参数传递post时将失败,因为this.params._id是整个:_ id参数,而不是从传递的对象中提取_ id。