2016-05-26 3 views
1

После внесения записи в коллекцию методом на стороне сервера я направляюсь на другой именованный маршрут. Но я получаю сообщение об ошибке: «не имеет метода« go ».Ошибка метеорологического маршрутизатора: не имеет метода 'go'

Meteor.methods({ 
    'create_item': function (item) { 

    Items.insert(item, function (error,result){ 
     if(result){ 
     Router.go('dashboard'); 
     } 
    }); 
    }, 
}); 

Маршрут успешно изменяется, и страница отображает шаблон панели мониторинга, но я получаю следующую ошибку.

I20160526-12:00:15.662(3)? Exception in callback of async function: TypeError: Object function router(req, res, next) {

I20160526-12:00:15.662(3)? router.dispatch(req.url, {

I20160526-12:00:15.662(3)? //XXX this assumes no other routers on the parent stack which we should probably fix

I20160526-12:00:15.662(3)? request: req,

I20160526-12:00:15.663(3)? }, next);

I20160526-12:00:15.662(3)? response: res

I20160526-12:00:15.663(3)? } has no method 'go'

I20160526-12:00:15.663(3)? at lib/methods.js:17:16

ответ

1

Вы, вероятно, определен метод по общей площади (например lib каталогов), так и на клиенте работает правильно, но на стороне сервера нет такой функции, как Router.go.

Вы должны вернуть результат из метода, а затем позвонить Router.go по телефону код стороны.

На сервере:

Meteor.methods({ 
    'create_item': function (item) { 
     //Insert blocks on server side, 
     //no need to use callback 
     return Items.insert(item); 
    }, 
}); 

На стороне клиента:

Meteor.call('create_item', item, function(err, res) { 
    if (err) { 
     console.error(err); 
    } else { 
     Router.go('dashboard'); 
    } 
}); 
+0

Спасибо Рамиль У меня было ощущение, что он был недоступен на стороне сервера. Но Meteor Methods выставлены Клиенту, поэтому я решил, что это может сработать. – Andy59469

1

Спасибо Ramil.

В конце концов я обнаружил, что lib не может быть найден на стороне сервера. Я также обнаружил крючки AutoForm - это гораздо более умный способ запустить код вставки вставки.

Я прикрепил крюк в железном пути (а контроллер Железный путь, чтобы быть точным)

onRun: function() { 
    AutoForm.hooks({ 
     createItemForm: { 
     onSuccess: function(){ 
     Router.go('dashboard'); 
     } 
     } 
    }); 
    this.next(); 
    },