我一直在学习一门课程,不明白express如何将请求主体的JSON中的值正确映射到常量变量数组。
post请求正文中的原始JSON是:
{
"status":"Systems Engineer",
"skills":"HTML ,CSS, Python, Machine Learning"
}
在server.js中,我已经将中间件初始化为:
app.use(express.json({ extended: false }));
在profile.js文件的后端:
const {
company,
website,
location,
bio,
status,
githubusername,
skills,
youtube,
twitter,
facebook,
linkedin,
instagram
} = req.body;
console.log(status);
console.log(skills);
输出:
"系统工程师">
"HTML,CSS,Python,机器学习">
这一系列Express中间件:
app.use(express.json({ extended: false }));
从传入的http请求流中读取请求的主体,然后解析在该请求主体中找到的JSON。解析后的JSON的结果属性被放入对象req.body
中,以便后续的请求处理程序使用其中的数据。该中间件填充它在解析的JSON中找到的任何属性。
这部分代码:
const {
company,
status,
skills,
...
instagram
} = req.body;
在Javascript中称为对象析构函数(与Express无关(。它基本上等同于这个代码:
const company = req.body.company;
const status = req.body.status;
const skills = req.body.skills;
...
const instagram = req.body.instagram;
任何具有req.body
中不存在的命名变量的属性最终都会有一个包含undefined
值的相应变量。存在的属性会将该属性的值复制到命名变量上。
此外,您的代码中没有数组。上面的第一个代码块是Javascript中的对象解构语法。