将参数解析为MongodB键时Javascript中的重构问题
我有两个几乎相同的函数,除了其中一个值是$set,如图所示:将参数解析为MongodB键时Javascript中的重构问题,javascript,mongodb,Javascript,Mongodb,我有两个几乎相同的函数,除了其中一个值是$set,如图所示: function extracted_start(details, txt) { return FutureTasks.upsert({ number: details.number, start_date: details.start_date,
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,
}
},
);
}
由于要解释的
key
是字面单词“key”
-请先创建对象并使用它:
var objToSet = {};
objToSet[key] = txt;
..
..
$set: objToSet
您将键用作文本值,而不是变量。您必须创建一个对象,并使用
obj[key]=txt
手动添加它。(旁注:函数名中的“generic”拼写错误。)
函数提取\u generaic(详细信息、键、txt){
var obj={},
obj[key]=txt;
return FutureTasks.upsert({
编号:details.number,
开始日期:详细信息。开始日期,
结束日期:详细信息。结束日期,
}, {
$set:obj
});
}
var obj={},obj[key]=txt;这是正确的语法吗?它是:var obj={},obj[key]=txt;或var obj={};obj[key]=txt;我看不出有什么不同?var obj={},它是分号结尾。就像答案中的一样。有什么问题吗?