2015-11-27 3 views
0

Возможно ли сделать эту функцию немного короче? Мне не нравится обновление if/else, которое почти одинаково. Единственное отличие - 'status.edited': false, который должен быть установлен только в том случае, если метод = сброс. В противном случае его не следует изменять.Сделать JS-функцию с if/else mongodb-update короче

function updateVersion(id, method) { 
    var timestamp = new Date().getTime(); 

    if (method == 'reset') { 
     Collection.update(
      { _id: id }, 
      { 
       $set: { 'status.version': timestamp, 'status.edited': false }, 
       $unset: { 'status.editing': '' } 
      } 
     ); 
    } 
    else { 
     Collection.update(
      { _id: id }, 
      { 
       $set: { 'status.version': timestamp }, 
       $unset: { 'status.editing': '' } 
      } 
     );  
    } 

} 

ответ

2

Вы можете создать свой запрос динамически, как это:

function updateVersion(id, method) { 
    var timestamp = new Date().getTime(); 
    var update = { 
     '$set': { 'status.version': timestamp }, 
     '$unset': { 'status.editing': '' } 
    }; 

    if (method === 'reset') 
     update['$set']['status.edited'] = false; 

    Collection.update({ '_id': id }, update); 
} 
1

Создайте объект для динамических свойств и передайте это запросу.

var set = { 
    'status.version': timestamp 
}; 

if(method === 'reset') { 
    set['status.edited'] = false; 
} 

Collection.update({ 
    _id: id 
}, { 
    $set: set, 
    $unset: { 
     'status.editing': '' 
    } 
});