在服务器端方法中将记录插入集合后,我将路由到不同的命名路由。但我得到一个错误:“没有方法'去'”。
Meteor.methods({
'create_item': function (item) {
Items.insert(item, function (error,result){
if(result){
Router.go('dashboard');
}
});
},
});
路由更改成功,页面呈现仪表板模板,但是出现以下错误。
I20160526-12:00:15.662(3)?异步函数回调中的异常: TypeError:对象函数路由器(req,res,next){
I20160526-12:00:15.662(3)? router.dispatch(req.url,{
I20160526-12:00:15.662(3)? // XXX这假设没有其他路由器 我们应该修复的父堆栈
I20160526-12:00:15.662(3)?要求:req,
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
答案 0 :(得分: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');
}
});
答案 1 :(得分:1)
谢谢拉米尔。
最后我发现在服务器端无法找到lib。我还发现了AutoForm挂钩 - 这是一种运行插入代码的更智能的方法。
我将这个钩子连接到铁路线(确切地说是铁路控制器)
onRun: function () {
AutoForm.hooks({
createItemForm: {
onSuccess: function(){
Router.go('dashboard');
}
}
});
this.next();
},