Router.current().route.getName() 返回错误服务器端
Router.current().route.getName() is returning an error server side
当我在方法调用(服务器端方法)中使用它时,Router.current().route.getName()
返回错误。我以为他们说 Iron-Router 应该在客户端和服务器端工作。我得到的错误是
Error invoking Method 'mySeverSideMethod': Internal server error [500]
请帮忙。
是的,iron:router 可以创建服务器端路由,但是 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
.
你说对了一半,路由器在客户端和服务器上都可以工作。但是,服务器端实现适用于服务器端路由(例如 REST 端点)。 client/server 与 iron:router 之间没有 "state" 共享(在方法内部调用时),因此 Router.current().route.getName()
会抛出此错误,因为 Router.current()
未定义.
调用方法时,您不会通过 Iron-Router 定义的 'route':它是由 Meteor 框架定义的路由。它不关心客户端在什么路由上。
因此,如果您需要知道客户端从哪个页面调用端点,您应该将其作为参数传递给方法。
Meteor.methods({
"myEndPoint": function(route) {
// use route here.
return //something
}
})
Router.current().route.getName()
返回错误。我以为他们说 Iron-Router 应该在客户端和服务器端工作。我得到的错误是
Error invoking Method 'mySeverSideMethod': Internal server error [500]
请帮忙。
是的,iron:router 可以创建服务器端路由,但是 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
.
你说对了一半,路由器在客户端和服务器上都可以工作。但是,服务器端实现适用于服务器端路由(例如 REST 端点)。 client/server 与 iron:router 之间没有 "state" 共享(在方法内部调用时),因此 Router.current().route.getName()
会抛出此错误,因为 Router.current()
未定义.
调用方法时,您不会通过 Iron-Router 定义的 'route':它是由 Meteor 框架定义的路由。它不关心客户端在什么路由上。
因此,如果您需要知道客户端从哪个页面调用端点,您应该将其作为参数传递给方法。
Meteor.methods({
"myEndPoint": function(route) {
// use route here.
return //something
}
})