我有两个函数几乎完全相同,除了其中一个值为$ set,如下所示:
function extracted_start(details, txt) {
return FutureTasks.upsert({
number: details.number,
start_date: details.start_date,
end_date: details.end_date
}, {
$set: {
access_rights: txt,
}
},
);
}
function extracted_end(details, txt) {
return FutureTasks.upsert({
number: details.number,
start_date: details.start_date,
end_date: details.end_date
}, {
$set: {
returned_status: txt,
}
},
);
}
如果我尝试重构如下,那么我得到'密钥'没有被使用?
function extracted_generic(details, key, txt) {
return FutureTasks.upsert({
number: details.number,
start_date: details.start_date,
end_date: details.end_date
}, {
$set: {
key: txt,
}
},
);
}
答案 0 :(得分:0)
您使用密钥作为文字值而不是变量。您必须创建一个对象并使用obj[key] = txt
手动添加它。 (旁注:您的函数名称中也拼写了“#generic;#39;错误”。)
function extracted_generaic(details, key, txt) {
var obj = {},
obj[key] = txt;
return FutureTasks.upsert({
number: details.number,
start_date: details.start_date,
end_date: details.end_date,
}, {
$set: obj
});
}

答案 1 :(得分:-1)
由于key
被解释为字面词"key"
- 首先创建对象并使用它:
var objToSet = {};
objToSet[key] = txt;
..
..
$set: objToSet