Node.js 使用Javascript从JSON文件中的键中选择父对象
我有一个文件Node.js 使用Javascript从JSON文件中的键中选择父对象,node.js,json,express,object,Node.js,Json,Express,Object,我有一个文件brands.JSON,其中包含: { "Apple": { "ceo": "Steve Jobs", "os": "OSX" }, "Microsoft": { "ceo": "Bill Gates", "os": "Windows" } } 在节点服务器的app.js中: app.get('/pages/:brandId', (req, res) => { let requestedBrand = req.param
brands.JSON
,其中包含:
{
"Apple": {
"ceo": "Steve Jobs",
"os": "OSX"
},
"Microsoft": {
"ceo": "Bill Gates",
"os": "Windows"
}
}
在节点服务器的app.js中:
app.get('/pages/:brandId', (req, res) => {
let requestedBrand = req.params.pageId;
console.log(requestedBrand) // might return "OSX" but I want it to become "Apple"
let brands = JSON.parse(fs.readFileSync(__dirname + '/views/data/brands.json'));
res.render('pages/brand', {
brand: brands[requestedBrand]
});
})
如果我点击带有
'/pages/OSX'
的链接,我希望requestedBrand
变成“苹果”
。同样,如果url要求比尔·盖茨
,我需要从品牌
对象的值中选择微软
,。找到其对象的值与请求的品牌
匹配的对象,如果该对象存在,则呈现该对象:
app.get('/pages/:brandId', (req, res) => {
let requestedBrand = req.params.pageId;
console.log(requestedBrand) // might return "OSX" but I want it to become "Apple"
let brands = JSON.parse(fs.readFileSync(__dirname + '/views/data/brands.json'));
const obj = Object.values(brands).find(brand => Object.values(brand).includes(requestedBrand));
if (obj) {
res.render('pages/brand', {
brand: obj
});
} else {
// no object found
}
})
实时片段:
const品牌={
“苹果”:{
“ceo”:“史蒂夫·乔布斯”,
“操作系统”:“OSX”
},
“微软”:{
“首席执行官”:“比尔·盖茨”,
“操作系统”:“Windows”
}
};
const requestedBrand=提示(“品牌”);
const obj=Object.values(brands).find(brand=>Object.values(brand).includes(requestedBrand));
如果(obj){
控制台日志(obj);
}否则{
console.log(“不匹配”);
}