在开发 Meteor 应用程序时,您需要将代码拆分为客户端和服务器端。在某些情况下,您需要在服务器端运行方法并返回结果。这就是 Meteor.methods 方法派上用场的地方。
何时使用 Meteor.methods?
Meteor.methods 允许您在服务器端定义方法,并从客户端调用它们。这非常有用,因为客户端可能无法执行所有必要的计算或数据库操作。例如:
-- -------------------- ---- ------- ---------------- ---------------------- - ----- ------ - --------------- ----- --- - -------------------------------------------------------------------------------- ----- -------- - -------------- ------ -------------- - --- -- ------- ------------------------- ---- ----------- ------- ------- -- - -- ------- - ------------------- - ---- - -------------------- - ---
在此示例中,我们定义名为 getWeather 的方法,该方法接受一个字符串参数 location 并获取位于该位置的天气信息。然后,我们使用 Meteor.call 从客户端调用此方法,并在响应成功时打印结果。
注意事项
- 不要将敏感信息存储在 Meteor.methods 中,以避免安全漏洞。
- Meteor.methods 中的代码在服务器端执行,因此请确保您的代码是可靠且高效的。
利用存根
存根(Stubs)是在客户端上定义的特殊方法,它们允许在应用程序的不同部分测试您的代码。存根类似于 Mock,但更轻量级。
示例
假设我们有一个名为 Posts 的集合,并且我们希望检查添加新帖子的功能是否正常工作。我们可以使用存根来模拟此操作:
-- -------------------- ---- ------- -- ----------------- - ---------------- ---------- -------------- -- --- - -- ----------------- - ---------------- ---------- -------------- - ------------------- - --- - ----------------- ---------- - ---------- ----- ------ --- ------- ---------- - ----- ---- - - ------ ---- ------ ----- ----- -- - --- ------ -- ----- ----------- - ------------------ -------- -- ---- ------------------------------- ------------------ -- ---- ------------------- ------------------------------------------ ---------------------- --- ---
在此示例中,我们使用 sinon 存根 Meteor.call 方法,以便在本地模拟服务器端的 addPost 方法。在 describe 库中,我们插入新发布并确保调用了正确的方法。
注意事项
- 使用存根进行测试时,请确保在生产设置中将其删除。
- 存根只能用于客户端测试,因为它们是在客户端上定义的。
结论
Meteor.methods 允许您在客户端和服务器端之间定义和调用方法。使用存根时,可以轻松地测试您的代码,并保证其在生产设置中正常工作。记住,在任何时候都要编写可靠且高效的代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/27817