http://docs.meteor.com/#meteor_methods
我在我的服务器文件夹中的publish.js中尝试过它。
我成功调用Meteor.apply并尝试从客户端调用服务器。我总是得到一个不明确的回应。
答案 0 :(得分:27)
在服务器上调用Meteor.methods
是正确的。这将定义在特权环境中运行的远程方法,并将结果返回给客户端。要返回正常结果,只需使用某个JSON值从方法函数调用return
。要发出错误信号,请抛出Meteor.Error
。
在客户端上,Meteor.apply
始终返回undefined
,因为方法调用是异步的。如果你想要方法的返回值,apply
的最后一个参数应该是一个回调,它将以典型的异步回调样式传递两个参数:error
和result
。
您的服务器代码是否真的被调用了?您可以通过更新方法中的数据库并查看客户端的缓存是否获取新数据,或者从方法体内调用console.log
并查看终端中“meteor”进程的输出来检查。 / p>
答案 1 :(得分:20)
有几个地方我可以定义我的Meteor.methods()
(与专家和骗子):
答案 2 :(得分:8)
我在这里上传了一个简短的例子,如果您需要一个有效的例子:https://gist.github.com/2387816
答案 3 :(得分:4)
我希望有些人会发现这种添加的使用,并且这并没有解决方法主要用于在服务器上运行的问题,正如 debergalis 所解释的那样。
在客户端上使用Meteor.methods()
也很有用。 (在Meteor.call()
部分也查找“ stub ”...)
这允许客户端(同步)模拟服务器调用的预期效果。
如文档中所述:
你一直使用方法,因为数据库变异器(插入, update,remove)作为方法实现。 (...)
解释在客户端上使用存根的单独部分可以简化对服务器上方法调用的理解。