Meteor.js – 使用带有“外键”的pathFor

我有一个Posts集合,其中集合中的每个Post都有一个userId属性.在我的帖子详细信息页面上,我想使用pathFor helper将用户名称包含在其配置文件的链接中.如果我只是包含{{pathFor’userProfile’}},它会设置与Post的_id的链接,正如人们所期望的那样,但我显然需要链接中的userId.

我已经尝试在模板的帮助器上创建第二个数据上下文,但是这也没有用.

脚本:

Template.postPage.helpers({
    user: function () {
        return {_id: this.userId};
    }      
});

模板:

<template name="postPage">
    {{#with user}}<a href="{{pathFor 'userProfile'}}">{{/with}}{{author}}</a>
</template>

我如何使用post Post文档中的userId字段而不是post文档中的_id字段?

如果重要的话,我正在使用铁路由器.

最佳答案 我假设你因为跟随
Iron Router’s example route for pathFor而陷入困境,看起来像这样:

Router.map(function () {
  this.route('postShow', {
    path: '/posts/:_id'
  });
});

这里的关键是:_id可以是任何字段.因此,对于您的代码,请尝试:

Router.map(function () {
  this.route('userProfile', {
    path: '/users/:userId'
  });
});

然后路径中的:userId对应于Post文档中的userId字段.

您也不需要模板助手或#with块.您的模板现在只是:

<template name="postPage">
  <a href="{{pathFor 'userProfile'}}">{{author}}</a>
</template>

userProfile路由将发送整个Post文档及其所有属性,包括文档_id和userId,以及作者和其他任何已定义的属性.路由知道要选择什么,因为你告诉它:userId而不是:_id或:author或其他东西.

点赞