代码之家  ›  专栏  ›  技术社区  ›  James T.

Meteor中的语法含义是什么。方法函数?

  •  0
  • James T.  · 技术社区  · 8 年前

    示例来自 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');
        }
    }
    

    看起来它只接受类型为的参数 Object ,内置JS。但是,令人困惑的是,它使用字符串来定义该对象中函数的名称。

    为什么我不能

    tasksInsert(text) {
      // ...
    }
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   James T.    8 年前

    在类或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
    
        2
  •  0
  •   Daniela Muniz    8 年前

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

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

    您只能拨打: Meteor.call('stringName_ofFunction', {params}, (err, result)=>{CallBack}); 如果之前定义了此 'stringName_ofFunction' 作为 Meteor.methods();

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