2016-05-30 2 views
0

Я хочу обновить свою коллекцию в server.js с помощью функции. Когда я меняю одно поле, мне нужно изменить несколько коллекций. Мой вопрос в том, как я могу использовать параметр в качестве имени коллекции. Есть ли способ для этого или я должен написать функцию для каждой коллекции?Как применить функцию для всех Collection

update: function(personID,option) { 
    return Personel.update(
    { id: personID }, 
    { $set: option }, 
    { multi: true } 
); 
}, 

Я хочу применить эту логику для отдельных коллекций.

ответ

1

Существует более сложное обходное решение этой проблемы. вам необходимо привязать всю вашу коллекцию к одному объекту.

CollectionList = {}; 

CollectionList.Personel = new Mongo.Collection('personel'); 
CollectionList.secondCollection = new Mongo.Collection('second'); 

после этого вы передаете в качестве имени вашей коллекции как строку в метод.

update: function(collectionName,personID,option){ 
    return CollectionList[collectionName].update(
      //..rest of your code 
      ); 
+1

На клиенте вы можете найти коллекции под 'this.global' или' window.global', то есть 'this.global [ 'Кадровая']' относится к коллекции «Персонал». Это позволяет избежать необходимости создавать свой собственный объект. –

+0

еще раз спасибо @MichelFloyd. У вас всегда есть что-то новое. Раньше я об этом не знал. –

0

Вы можете попробовать этот подход:

var Personel = new Mongo.Collection('personel'); 
var Items = new Mongo.Collection('items'); 
var SomeOtherCollection = new Mongo.Collection('someOtherCollection'); 

.... 

update: function(personID, option, collectionName) { 
    // Choose collection by given name 
    var Collection = { 
    Personel: Personel, 
    Items: Items, 
    SomeOtherCollection: SomeOtherCollection 
    }[collectionName]; 

    return Collection.update(
    { id: personID }, 
    { $set: option }, 
    { multi: true } 
); 
}, 
Смежные вопросы