Router.current().route.getName()
返回错误。我以为他们说Iron-Router应该同时适用于客户端和服务器端。我得到的错误是
Error invoking Method 'mySeverSideMethod': Internal server error [500]
请帮忙。
答案 0 :(得分:0)
是的,铁:路由器可以创建服务器端路由,但该api只是客户端
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.route
,this.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
}
})