Exception Meteor Iron路由器错误:没有方法';go';
在服务器端方法中将记录插入集合后,我将路由到另一个命名路由。但我得到一个错误:“没有方法‘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:16Exception 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
您可能在共享区域(例如,
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();
},