使带有if/else mongodb-update的JS-function更短

Make JS-function with if/else mongodb-update shorter

本文关键字:mongodb-update JS-function 更短 else if      更新时间:2023-09-26

可以把这个函数缩短一点吗?我不喜欢 if/else 更新,它几乎相同。唯一的区别是'status.edited': false,如果方法=重置,则应仅设置该。否则不应对其进行修改。

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': '' }
            }
        );      
    }
}

您可以像这样动态构建查询:

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 );
}

为动态属性创建一个对象并将其传递给查询。

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