breadcrumb path:检索路径下所有内容的数据

时间:2015-04-23 13:03:26

标签: javascript node.js meteor

我的应用程序中有一些看起来如下的路径,都是在痕迹路径下。

/class/:slug
/class/:slug/student/:_id
/class/:slug/teacher/:_id

然而,这往往导致冗余,因为我必须在查询之前不断地通过slug查找类

this.route('Class.teacher', {
  path: '/class/:slug/teacher/:_id',
  waitOn: function() {
    return Meteor.subscribe('teachers');
  },
  data: function() {
    var classId = Classes.findOne({ slug: this.params.slug })._id;
    if(!classId) {
      throw new Meteor.Error(404, 'That class does not exist');
    }

    return Teacher.findOne(
      { _id: this.params._id, classIds: classId }
    );
  }
})

问题是这似乎导致的冗余量,因为我开始寻找班级的大部分路线。

有没有办法在/class/:slug路线上进行某种操作?我在想这样的事情:

Router.route('/class/:slug/*', {
  waitOn: function() {
    return Meteor.subscribe('classes', this.params.slug);
  },
  onBeforeAction: function() {
    var class = Classes.findOne(this.params.slug);
    if(!class) {
      throw new Meteor.Error(404, "Class not found");
      this.stop();
    }
    this.next();
  }
});

然而,这不起作用。以这种方式处理面包屑路径的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

你可以使用

Router.onBeforeAction(function(req, res, next){
    // find class here
    // req.params.slug Not sure about this
    next()
}, { only: ['class'] });

只是一个想法。