Router.current()。route.getName()返回错误服务器端

时间:2016-03-31 09:00:31

标签: meteor iron-router

当我在方法调用(服务器端方法)中使用它时,

Router.current().route.getName()返回错误。我以为他们说Iron-Router应该同时适用于客户端和服务器端。我得到的错误是

Error invoking Method 'mySeverSideMethod': Internal server error [500]

请帮忙。

3 个答案:

答案 0 :(得分:0)

是的,铁:路由器可以创建服务器端路由,但该api只是客户端

From the docs

Router.route('/download/:file', function () {
  // NodeJS request object
  var request = this.request;

  // NodeJS  response object
  var response = this.response;

  this.response.end('file download content\n');
}, {where: 'server'});

您可以访问NodeJS请求对象,因此您应该能够找到所需内容,例如this.request.routethis.request.path

答案 1 :(得分:0)

你是正确的一半,路由器可以在客户端和服务器上运行。但是,服务器端实现适用于服务器端路由(例如,REST端点)。客户端/服务器与iron:router(在方法内部调用时)之间没有“状态”共享,因此Router.current().route.getName()会抛出此错误,因为Router.current()未定义。

答案 2 :(得分:0)

调用方法时,您不会通过“'路径”。由Iron-Router定义:它是由Meteor框架定义的路由。它不关心客户端的路由。

因此,如果您需要知道客户端在哪个页面上调用端点,则应将其作为参数传递给Method。

Meteor.methods({
    "myEndPoint": function(route) {
        // use route here.
        return //something
    }
})