将参数解析为MongodB的键时,Javascript中的重构问题
Refactoring issue in Javascript when parsing arguments to MongodB as keys
我有两个几乎相同的函数,除了其中一个值要设置为$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,
}
},
);
}
如果我试着按照下面的方式重构,那么我会得到"key"没有被使用吗?
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,
}
},
);
}
您使用键作为文字值,而不是变量。您必须创建一个对象并使用obj[key] = txt
手动添加它。(旁注:您的函数名称中也拼写了"generic"错误。)
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
});
}
由于key
被解释为字面单词"key"
-首先创建您的对象并使用它:
var objToSet = {};
objToSet[key] = txt;
..
..
$set: objToSet
相关文章:
- JSON重构(合并内容)与javascript
- 在JavaScript中重构上个月的第一天和最后一天的代码(node.js)
- 将ECMAScript 6析构函数赋值(ES2015)重构为旧版本的javascript
- 我可以用javascript中的switch或case语句重构if-else吗
- 有没有一个好的框架或方法来重构JavaScript对象
- Javascript重构通常称为函数
- 如何在我编写的JavaScript中重构Ruby的#{}方法
- 使用合并/过滤重构Javascript数组
- 终于有办法让重构在Eclipse Kepler中的JavaScript、HTML项目中发挥作用了吗
- JavaScript重构/避免重复
- 在Javascript中重构
- 关于重构大型JavaScript方法的建议
- 重构 javascript 部分以运行的过程或工具
- Javascript:重构循环之外的函数
- 关于将 Javascript 重构为 JavaScript MVC 框架的好教程
- 用javascript重构变量以创建对象
- jQuery/javascript重构问题
- JavaScript:重构对象中的方法和函数存在问题
- 通过特定规则用JavaScript重构JSON
- JavaScript重构-如何重构这些代码