是否可以将此功能缩短一点?我不喜欢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': '' }
}
);
}
}
答案 0 :(得分: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 :(得分:1)
为动态属性创建一个对象,并将其传递给查询。
var set = {
'status.version': timestamp
};
if(method === 'reset') {
set['status.edited'] = false;
}
Collection.update({
_id: id
}, {
$set: set,
$unset: {
'status.editing': ''
}
});