2016-03-31 3 views
0

Router.current().route.getName() возвращает ошибку, когда я использую ее в вызове метода (метод на стороне сервера). Я думал, они говорят, что Iron-Router должен работать как на стороне клиента, так и на стороне сервера. Ошибка, которую я получаю:Router.current(). Route.getName() возвращает ошибку на стороне сервера

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

Пожалуйста, помогите.

ответ

0

Вы на полпути справа, маршрутизатор работает как на клиенте, так и на сервере. Однако реализация на стороне сервера предназначена для серверных маршрутов (например, конечных точек REST). Между клиентом и сервером отсутствует соединение с железом: router (при вызове внутри методов), поэтому Router.current().route.getName() собирается выбросить эту ошибку, потому что Router.current() не определен.

+0

Это правильно, но это не помогает с тем, чего я пытаюсь достичь. Спасибо. –

0

Да, железо: маршрутизатор может создавать стороны сервера маршрутов, но апи является клиент только

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.route, this.request.path.

+0

Я попробую ваш ответ и вернусь к вам. –

+0

У меня было только время, чтобы прочитать документы и ознакомиться с ним сейчас. Это не помогает мне, поскольку this.request должен быть установлен на клиенте; и набор данных на клиенте нельзя доверять. Было бы здорово, если бы у this.request было что-то, что автоматически устанавливается браузером и не может быть изменено на другом конце. Спасибо, в любом случае. Это отстой, что я не могу найти простой способ. –

+0

Было бы неплохо, если бы железный маршрутизатор мог автоматически установить значение, которое можно было бы использовать на клиенте, и это значение не могло быть смягчено на клиенте или по пути –

0

При вызове метода вы не пройдете «маршрут», как это определено Iron-Router: это маршрут, определяемый средой Meteor. Ему не важно, на каком пути находится клиент.

Итак, если вам нужно знать, с какой страницы клиент вызывает конечную точку, вы должны передать ее в качестве параметра для метода.

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

Нет спасибо Это было бы закалено. –

+0

, но спасибо в любом случае –

+0

ну, я не знаю другого способа узнать, на каком маршруте вы находитесь. Метод можно вызвать из любого ро ute в любом случае, поэтому, возможно, вам просто не следует использовать метод, но поместите вещи, которые вам нужны, в коллекцию, на которую вы подписаны только на маршруте, на который вы нацелились. – MrE

 Смежные вопросы

  • Нет связанных вопросов^_^