Javascript 使用if/else mongodb update缩短JS函数

Javascript 使用if/else mongodb update缩短JS函数,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,有没有可能把这个函数缩短一点?我不喜欢几乎相同的if/else更新。唯一的区别是“status.edited”:false,只有在method=reset时才应设置该值。否则就不应该修改 function updateVersion(id, method) { var timestamp = new Date().getTime(); if (method == 'reset') { Collection.update( { _id: i

有没有可能把这个函数缩短一点?我不喜欢几乎相同的if/else更新。唯一的区别是
“status.edited”:false
,只有在method=reset时才应设置该值。否则就不应该修改

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

}

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

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

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

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

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

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

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

Collection.update({
    _id: id
}, {
    $set: set,
    $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 );
}

您可以动态生成查询,如下所示:

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