如何将 sql return 转换为自定义对象?
How to convert a sql return to a custom Object?
在我的代码中,我在存储参数的 SQL table 上创建了一个 SELECT,我想以这种方式输出一个对象:
{
inscription_max: 0,
inscription_open: false,
liste_attente_max: 0
}
SQL Return :
[
RowDataPacket { setting: 'inscription_max', value: '0' },
RowDataPacket { setting: 'inscription_open', value: 'false' },
RowDataPacket { setting: 'liste_attente_max', value: '0' }
]
如果您需要更多信息,请不要犹豫。
我希望你能帮助我。
提前致谢。
您可以尝试 reduce 一个数组,它会为每个数组元素的结果对象添加一个新字段:smth like this
let data = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
]
data.reduce((acc, rec) => ({...acc, [rec.setting] : rec.value}), {})
你可以.map()
每个对象到当前对象的一个变体,其中setting
值是新对象的键,value
[=44的值=] 是新对象的值。您还可以使用 JSON.parse(value)
来确保将其字符串版本解析为其原始值(参见第二个示例)。然后你可以使用 Object.assign()
和扩展语法来从你的新对象数组构建一个对象:
const arr = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
];
const res = Object.assign({}, ...arr.map(({setting, value}) => ({[setting]: value})));
console.log(res);
如果你能支持Object.fromEntries()
,少一点代码也能达到同样的效果:
const arr = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
];
const res = Object.fromEntries(arr.map(({setting, value}) => [setting, JSON.parse(value)]));
console.log(res);
上面可以写得更优雅一些,正如@Andreas所指出的:
const arr = [ { setting: 'inscription_max', value: '0' }, { setting: 'inscription_open', value: 'false' }, { setting: 'liste_attente_max', value: '0' } ];
const res = Object.fromEntries(arr.map(Object.values)); // credit to: @Andreas
console.log(res);
在我的代码中,我在存储参数的 SQL table 上创建了一个 SELECT,我想以这种方式输出一个对象:
{
inscription_max: 0,
inscription_open: false,
liste_attente_max: 0
}
SQL Return :
[
RowDataPacket { setting: 'inscription_max', value: '0' },
RowDataPacket { setting: 'inscription_open', value: 'false' },
RowDataPacket { setting: 'liste_attente_max', value: '0' }
]
如果您需要更多信息,请不要犹豫。 我希望你能帮助我。
提前致谢。
您可以尝试 reduce 一个数组,它会为每个数组元素的结果对象添加一个新字段:smth like this
let data = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
]
data.reduce((acc, rec) => ({...acc, [rec.setting] : rec.value}), {})
你可以.map()
每个对象到当前对象的一个变体,其中setting
值是新对象的键,value
[=44的值=] 是新对象的值。您还可以使用 JSON.parse(value)
来确保将其字符串版本解析为其原始值(参见第二个示例)。然后你可以使用 Object.assign()
和扩展语法来从你的新对象数组构建一个对象:
const arr = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
];
const res = Object.assign({}, ...arr.map(({setting, value}) => ({[setting]: value})));
console.log(res);
如果你能支持Object.fromEntries()
,少一点代码也能达到同样的效果:
const arr = [
{ setting: 'inscription_max', value: '0' },
{ setting: 'inscription_open', value: 'false' },
{ setting: 'liste_attente_max', value: '0' }
];
const res = Object.fromEntries(arr.map(({setting, value}) => [setting, JSON.parse(value)]));
console.log(res);
上面可以写得更优雅一些,正如@Andreas所指出的:
const arr = [ { setting: 'inscription_max', value: '0' }, { setting: 'inscription_open', value: 'false' }, { setting: 'liste_attente_max', value: '0' } ];
const res = Object.fromEntries(arr.map(Object.values)); // credit to: @Andreas
console.log(res);