http://docs.meteor.com/#meteor_methods
我已经在我的服务器文件夹中的 publish.js 中尝试过它。
我成功调用 Meteor.apply 并尝试从客户端调用服务器。我总是得到一个未定义的响应。
http://docs.meteor.com/#meteor_methods
我已经在我的服务器文件夹中的 publish.js 中尝试过它。
我成功调用 Meteor.apply 并尝试从客户端调用服务器。我总是得到一个未定义的响应。
在服务器上调用Meteor.methods
是正确的。这将定义在特权环境中运行并将结果返回给客户端的远程方法。要返回正常结果,只需return
使用一些 JSON 值从您的方法函数调用。要发出错误信号,请抛出Meteor.Error
.
在客户端,Meteor.apply
总是返回undefined
,因为方法调用是异步的。如果你想要方法的返回值,最后一个参数apply
应该是一个回调,它将被传递两个参数:error
和result
,在典型的异步回调样式中。
你的服务器代码真的被调用了吗?您可以通过更新方法中的数据库并查看客户端的缓存是否获取新数据,或console.log
从方法主体内部调用并查看终端中“流星”进程的输出来检查这一点。
有几个地方我可以定义我的Meteor.methods()
(有赞成和反对的):
我在这里上传了一个简短的例子,如果你需要一个这样的工作例子:https ://gist.github.com/2387816
我希望有些人会发现这个添加的用途,这并没有掩盖方法主要用于在服务器上运行的问题,正如debergalis所解释的那样。
在客户端上使用Meteor.methods()
也很有用。(也在该部分中寻找“存根Meteor.call()
” ......)这允许客户端(同步)模拟服务器调用的预期效果。如文档中所述:
您一直在使用方法,因为数据库修改器(插入、更新、删除)是作为方法实现的。(...)
一个单独的部分解释在客户端上使用存根可能有助于理解服务器上的方法调用。