// GET - Get login settings
router.route('/login/settings').get((req, res) => {
let settings =[];
pool.connect((err, client, done) => {
client.query('SELECT * FROM public.settings', (err, result) => {
settings = result.rows;
res.json({
settings,
});
});
});
});
我的API路由中有这个代码,它返回以下JSON对象:
{
"settings": [
{
"key": "TwoFactorAuth",
"value": "false"
},
{
"key": "sessionTimeout",
"value": "200"
}
]
}
如何在路由代码中编写一个循环来将JSON响应对象更改为:
{
"settings": [
{
"TwoFactorAuth": "false"
},
{
"sessionTimeout": "200"
}
]
}
答案 0 :(得分:1)
通过在数组上进行映射来更改result.rows对象的形状。
更改第6行:
settings = result.rows;
要:
settings = result.rows.map(setting => ({[setting.key]:setting.value}))
应该这样做
答案 1 :(得分:0)
循环遍历settings
数组并使用一个属性创建一个新对象。属性的名称来自原始元素的key
元素,属性的值来自value
元素。然后用这个替换数组元素。
var settings = response.settings;
for (var i = 0; i < settings.length; i++) {
var obj = {};
obj[settings[i].key] = settings[i].value;
settings[i] = obj;
}
答案 2 :(得分:0)
要将变量添加为某个对象的键,可以使用[key]表示法。 尝试将此对象设置为更新:
settings = settings.map((data) => {
var object = {};
object[data.key] = data.value;
return object;
});
答案 3 :(得分:0)
试试这个工作片段:
var jsonObj = {
"settings": [
{
"key": "TwoFactorAuth",
"value": "false"
},
{
"key": "sessionTimeout",
"value": "200"
}
]
};
var res = jsonObj.settings.map(function(item) {
var x={};
x[item.key] = item.value;
return x;
});
console.log(res);
&#13;