如果对象不存在,则重定向到Meteor中的不同路由

时间:2015-11-13 07:19:53

标签: javascript node.js meteor flow-router

我使用路径postDetail使用路由器/posts/:postId

我想检查帖子是否确实存在。如果帖子不存在,我想改为显示postList路线。

我该怎么做?我想我可以使用triggersEnter;但是,数据是在模板中订阅的,所以也许我不能在路由器中使用triggersEnter

一种简单的方法是使用模板助手中的变量doesExists填充模板,然后使用

{{#if doesExists}}
  [...]
{{else}}
  {{> postList}}
{{/if}}

但我不认为这是一种非常聪明的方法,因为我必须在很多不同的模板中执行此操作,并且我无法使用此方法将用户重定向到postList路由。

1 个答案:

答案 0 :(得分:0)

如果您有模板级订阅,请执行以下操作:

Template.YOUR_TEMPLATE_HERE.onCreated(function() {
  let self = this;
  self.autorun(function() {
    self.subscribe('posts');
  })
});

然后您可以使用triggersEnter重定向,如下所示:

triggersEnter: [function(context, redirect) {
  if (Posts.find({_id:context.params.id}).count() < 1)
    redirect('/postslist');
}],