node.js - 使用 Meteor 和 iron 从路由器获取参数 :router

标签 node.js meteor iron-router meteor-helper

我有一条路线

Router.route('/post/:_id', {
  name: 'post',
  template: 'post'
});

还有一个 helper

Template.post.helpers({
  post: function () {
    return Posts.findOne(this._id);
  }
});

它找不到指定的帖子。但我想我以错误的方式获取了 id。我见过一些他们使用 session 的项目。这真的有必要吗?不是可以从路由器获取参数吗?

最佳答案

通常你会像这样在路由级别设置数据上下文:

Router.route("/post/:_id",{
  name:"post",
  template:"post",
  waitOn:function(){
    return this.subscribe("post",this.params._id);
  },
  data:function(){
    return Posts.findOne(this.params._id);
  }
});

RouteController 方法中,您可以使用 this.params.parameterName 访问 URL 参数。

然后在您的帖子模板中,您可以访问路由器设置的数据上下文,而无需专门的帮助程序。

<template name="post">
  post id is {{_id}}
</template>

就帖子列表而言,您可以坚持相同的模式:

Router.route("/posts",{
  name:"posts",
  template:"posts",
  waitOn:function(){
    return this.subscribe("posts");
  },
  data:function(){
    return {
      posts:Posts.find()
    };
  }
});

<template name="posts">
  {{#each posts}}
    {{> postItem}}
  {{/each}}
</template>

关于node.js - 使用 Meteor 和 iron 从路由器获取参数 :router,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27470267/

相关文章:

node.js - 如何使用 dotenv 而不必在每个文件中都需要它?

javascript - Windows 上带有 NodeJS 的 Protobuf

node.js - Node.js Express.js Mongoose 中的输入字段验证

javascript - Meteor、Modulus 和安全的 websockets

javascript - 铁路由器: access route data in router function

javascript - 为什么 async await 和 Promise.all 的运行时间相同?

javascript - ADMIN LTE 通知下拉菜单不包含内容

javascript - 在两个集合之间传递数据 - Meteor JS

node.js - Meteor 中服务器端路由的身份验证

amazon-s3 - 如何通过 Meteor Iron Router 从 S3 提供文件