将参数解析为MongodB键时Javascript中的重构问题

将参数解析为MongodB键时Javascript中的重构问题,javascript,mongodb,Javascript,Mongodb,我有两个几乎相同的函数,除了其中一个值是$set,如图所示: function extracted_start(details, txt) { return FutureTasks.upsert({ number: details.number, start_date: details.start_date,

我有两个几乎相同的函数,除了其中一个值是$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,
                        }
                    },
                );
            }

由于要解释的
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={},它是分号结尾。就像答案中的一样。有什么问题吗?