我有一个需要拆分的对象,因此我可以重新使用代码。
它是数据库的配置对象。
这就是 npm 软件包中的mssql
所期望的。
const config = {
user: process.env.USER,
password: process.env.PASS,
server: process.env.SERVER,
database: process.env.DB,
options: {
encrypt: false
}
};
我想分开它,这样我可以有2个分开的对象,我仍然可以将它们组合在一起使用,但是我不确定该怎么做。
const config = {
user: process.env.USER,
password: process.env.PASS,
server: process.env.SERVER,
database: process.env.DB
}
const options = {
encrypt: false
}
我想要这样的东西,所以我可以将2用于mssql
时以某种方式将其合并,但是我仍然可以在其他地方使用const config
而不使用options
。
这可能吗?
当我结合两者时,我已经尝试过
const mssqlConfig = { connection: config, options };
但这给了我{ }
周围多余的config
组,我不需要。任何帮助将不胜感激!谢谢!
答案 0 :(得分:2)
使用时,请复制config
的 并将其添加options
。您可以使用Object.assign
进行复制(这是一个浅表副本,但是您的config
没有嵌套的对象);
var configToUse = Object.assign({}, config);
configToUse.options = options;
如果您也要复制options
:
var configToUse = Object.assign({}, config, {options: Object.assign({}, options)});
您还可以使用ES2018 +的属性扩展表示法:¹
const configToUse = {...config, options}; // Doesn't copy options, just uses it
// or
const configToUse = {...config, options: {...options}};
¹是的,真的是ES2018。 Array 传播是在ES2015中进行的,但属性传播直到ES2018才进行。
答案 1 :(得分:2)
使用ES2018 +,您可以使用spread(...
)运算符将对象属性扩展到新对象上,这正是您想要的。
const config = {
user: "process.env.USER",
password: "process.env.PASS",
server: "process.env.SERVER",
database: "process.env.DB"
}
const options = {
encrypt: false
}
const mssqlConfig = { ...config, options };
console.log(mssqlConfig);
答案 2 :(得分:0)
也许您正在寻找Object.assign
:
const config = {
user: "process.env.USER",
password: "process.env.PASS",
server: "process.env.SERVER",
database: "process.env.DB"
}
const options = {
encrypt: false
}
const both = Object.assign({
options: options
}, config);
console.log(both);
答案 3 :(得分:0)
如果您使用的是ES6,则可以使用扩展运算符:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
类似这样:
const mssqlConfig = { ...config, options }
答案 4 :(得分:0)
我认为您想使用Object.assign(dest,source),此方法会将密钥从一个对象复制到另一个,例如:
const config = {
prop1: 'Prop value',
prop2: 'Prop2 value',
}
const options = {
encrypt: false
}
Object.assign(config, options);
console.log(config);
运行该代码段,您将看到最终结果,最后但并非最不重要的MDN Reference