meteor - 发布/订阅和方法有什么区别?我们在哪里/何时使用方法和发布/订阅?
问题描述
今天我尝试在流星上工作并遇到从服务器页面获取数据的问题..
我尝试在谷歌和流星方面搜索它,但有两种方法可以获取数据publish / subscribe
和Method
有以下代码,我不知道如何在流星服务器端编写它并在客户端获取该数据
function (x)
{
var y =2
var z = y*x
return z;
}
现在我想在客户端调用这个方法
解决方案
发布/订阅和方法有什么区别?我们在哪里/何时使用方法和发布/订阅?
因此,如果您想要一个不需要发布/订阅的逻辑。方法用于逻辑发布/订阅以进行数据处理。
重要提示: 如果您需要在方法上使用来自流星集合的数据,则如果方法在服务器端执行,则需要考虑这一点,它可以访问所有数据(集合)。如果该方法在客户端执行,则它只能访问已发布的数据。
另一方面,根据您的示例,您不需要任何数据,因此我将跳过它。
我强烈建议使用经过验证的方法:
https://github.com/meteor/validated-method
现在让我们来看例子
想象一下你有一个方法
export const calculate = new ValidatedMethod({
name: 'logic.calculate', // methods are usually named like this
validate: new SimpleSchema({ // use SimpleSchema to autovalidate parameters
x: {
type: Number
}
}).validator(),
run({ x }) {
const y = 2;
return y*x;
}
});
注意事项: 1. 文件应该在服务器上的某处导入。2.您需要使用验证
现在在客户端调用它
Meteor.call('logic.calculate', { x }, (error, result) => {
if (error) {
do something
}
console.log(result);
});
此外,您可以直接导入该方法并像这样调用它:
import { calculate } from '../../api/logic/methods';// use real method path here
calculate.call({ x }, (error, result) => {
if (error) {
do something
}
console.log(result);
});
请注意,对于已验证的方法,参数是一个对象
推荐阅读
- android - 如何在 Jetpack Compose 中更新画布上对象的位置变化?
- javascript - 打字稿:使用函数数组键入函数,该函数返回每个函数返回类型的数组
- css - 选择器右侧的 SASS (SCSS) 加号和 & 语法 ( + & ) 的含义?
- javascript - 光滑块中的未知背景颜色
- javascript - 当我尝试将数据放入这些对象时,使用 Vuex 操作获取数据对象并得到“未捕获(承诺)类型错误”
- python - 创建一个基于对象 Django 的 id 收集数据的超链接
- go - 为什么带有 GCM 的 AES-256 会在密文大小上增加 16 个字节?
- c++ - C++:如何将“this”对象作为指针引用传递
- c# - 如何检测 datagridview 行中的更改?
- javascript - 如何在 React 中使用 JS 脚本