Meteor.method函数中语法的含义是什么?

时间:2018-03-24 19:55:51

标签: meteor

来自https://www.meteor.com/tutorials/react/security-with-methods

的示例
Meteor.methods({
  'tasks.insert'(text) {
    check(text, String);

    // Make sure the user is logged in before inserting a task
    if (! this.userId) {
      throw new Meteor.Error('not-authorized');
    }
}

看起来它所采用的唯一参数是JS中内置的Object类型。但是,令人困惑的部分是它使用字符串来定义该对象中函数的名称。

为什么我不能

tasksInsert(text) {
  // ...
}

2 个答案:

答案 0 :(得分:2)

使用字符串来定义类或JS对象范围内的方法名称是可以接受的。

j@j-desktop:~$ node
> function 'add'(x, y) {
function 'add'(x, y) {
         ^^^^^

SyntaxError: Unexpected string

> 'add'(x, y) {
... function 'add'(x, y) {
         ^^^^^

SyntaxError: Unexpected string

> 'add'(x, y) {
... return x + y;
... }
... 
... ;
... 
> class A {
... 'add'(x, y) {
..... return x + y;
..... }
... 
... }
undefined
> let a = new A();
undefined
> a.add(1, 1);
2
> let obj = {
... 'addTwo'(x) {
..... return x + 2;
..... }
... }
undefined
> obj.addTwo(4);
6

答案 1 :(得分:0)

Metor.methods()定义Meteor应用程序的服务器端方法。 这不是一个简单的函数调用。通过它,您将定义客户端将调用哪些函数。

这是一种模板交互数据库,检查,验证和更改的方法。

如果您之前将此Meteor.call('stringName_ofFunction', {params}, (err, result)=>{CallBack});定义为'stringName_ofFunction'内的函数,则只能致电:Meteor.methods();

问题是,随着您的应用程序变得越来越大,您可以为您的serverSide方法定义不同的文件,这样您就可以更有条理。你将使用Meteor.Methods();告诉Meteor,该方法中的那些函数是客户端Meteor.call()调用的服务器端函数。