req.body是如何正确映射到这里的常量变量数组的



我一直在学习一门课程,不明白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中的对象解构语法。

最新更新