2015-09-18 19 views
9

Tôi bắt đầu với Meteor và muốn tổ chức các phương thức của mình ... Ví dụ, tôi có 2 collecations: 'a' và 'b', cả hai đều có phương thức chèn .. Tôi muốn làm một cái gì đó như thế:Tôi có thể nhóm các phương thức trong Meteor không?

Meteor.methods({ 
    a: { 
     insert : function(){ 
      console.log("insert in Collection a"); 
     } 
     }, 
    b: { 
     insert : function(){ 
      console.log("insert in Collection b"); 
     } 
     } 
}); 

Và sau đó gọi
Meteor.call('a.insert');

Có thể làm điều này? Hoặc làm thế nào tôi có thể tổ chức các phương pháp của tôi?

Tôi không muốn làm cho các phương pháp như: 'insertA' và 'insertB'

Trả lời

6

Bạn có thể sử dụng cú pháp sau:

Meteor.methods({ 
    "a.insert": function(){ 
    console.log("insert in Collection a"); 
    } 
    "b.insert": function(){ 
    console.log("insert in Collection b"); 
    } 
}); 

nào cho phép bạn làm Meteor.call("a.insert");.

+0

Đây là phong cách chúng tôi hiện đang sử dụng tại Edthena. Tôi cũng đã thấy 'a/insert' giống như một URL. Nó chỉ là vấn đề ưu tiên. –

+0

đây là những gì tôi làm là tốt, nó khá thuận tiện. Ngoài ra, bạn có thể có nhiều móc phương thức sao băng và chúng sẽ tiếp tục mở rộng – corvid

5

Xây dựng dựa trên ý tưởng của saimeunt, bạn cũng có thể thêm chức năng trợ giúp vào mã của mình nếu bạn quan tâm đến sự thanh lịch của các nhóm này trong mã của bạn. Sau đó, bạn có thể sử dụng các ký hiệu bạn thích và thậm chí cả nhóm tổ tùy tiện:

var methods = { 
    a: { 
     insert : function(){ 
      console.log("insert in Collection a"); 
     } 
    }, 
    b: { 
     insert : function(){ 
      console.log("insert in Collection b"); 
     }, 
     b2: { 
      other2: function() { 
       console.log("other2"); 
      }, 
      other3: function() { 
       console.log("other3"); 
      } 
     } 
    }, 
}; 

function flatten(x, prefix, agg) { 
    if (typeof(x) == "function") { 
     agg[prefix] = x; 
    } else { 
     // x is a (sub-)group 
     _.each(x, function(sub, name) { 
      flatten(sub, prefix + (prefix.length > 0 ? "." : "") + name, agg); 
     }); 
    } 
    return agg; 
} 

Meteor.methods(flatten(methods, "", {})); 

Sau đó, bạn sẽ gọi với ký hiệu dấu chấm, như:

Meteor.call('b.b2.other2'); 
Các vấn đề liên quan