Exception Meteor Iron路由器错误:没有方法';go';

Exception Meteor Iron路由器错误:没有方法';go';,exception,meteor,iron-router,Exception,Meteor,Iron Router,在服务器端方法中将记录插入集合后,我将路由到另一个命名路由。但我得到一个错误:“没有方法‘go’” 路由成功更改,页面呈现仪表板模板,但我得到以下错误 I20160526-12:00:15.662(3)?异步函数回调中出现异常: 类型错误:对象函数路由器(req、res、next){ I20160526-12:00:15.662(3)?路由器调度(请求url{ I20160526-12:00:15.662(3)?//XXX这是假设网络上没有其他路由器 我们可能应该修复的父堆栈 I20160526

在服务器端方法中将记录插入集合后,我将路由到另一个命名路由。但我得到一个错误:“没有方法‘go’”

路由成功更改,页面呈现仪表板模板,但我得到以下错误

I20160526-12:00:15.662(3)?异步函数回调中出现异常: 类型错误:对象函数路由器(req、res、next){

I20160526-12:00:15.662(3)?路由器调度(请求url{

I20160526-12:00:15.662(3)?//XXX这是假设网络上没有其他路由器 我们可能应该修复的父堆栈

I20160526-12:00:15.662(3)?请求:请求

I20160526-12:00:15.663(3)?},下一步)

I20160526-12:00:15.662(3)?回复:res

I20160526-12:00:15.663(3)?}没有方法“go”

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


您可能在共享区域(例如,
lib
目录)上定义了方法,因此在客户端它可以正常工作,但在服务器端没有像
Router.go
这样的功能

您应该从方法返回结果,然后调用
路由器。转到客户端代码上的

在服务器上:

Meteor.methods({
“创建项”:函数(项){
//在服务器端插入块,
//不需要使用回调
返回项目。插入(项目);
},
});
在客户端:

Meteor.call('create_item',item,function(err,res){ 如果(错误){ 控制台错误(err); }否则{ Router.go(“仪表板”); } });
谢谢你,拉米尔

最后我发现在服务器端找不到lib。我还发现了AutoForm钩子——这是运行插入后代码的一种更聪明的方法

我把这个钩子挂在铁路线上(确切地说是铁路线控制器)


谢谢你,Ramil,我有一种感觉,它在服务器端是不可用的。但是Meteor方法是向客户公开的,所以我认为它可能会起作用。
Meteor.methods({
  'create_item': function (item) {

    Items.insert(item, function (error,result){
      if(result){
        Router.go('dashboard');
      }
    });
  },
});
onRun: function () {
    AutoForm.hooks({
      createItemForm: {
        onSuccess: function(){
         Router.go('dashboard');
        }
      }
    });
    this.next();
  },