我正在尝试使用 Node 和 Express 为 RESTful API 声明一个
POST
方法。我需要接受请求正文并将其写入用于存储用户数据的 JSON 文件。我正在使用 fs
模块来修改 JSON 文件。
我编写了相同的代码,但在声明 return 语句时略有不同。
方法1-
app.post('/api/users', (req, res) => {
const body = req.body;
users.push(body)
fs.writeFile("./users.json", JSON.stringify(users), (err) => {
if (err) {
console.log(err)
}
return res.json({ status: 'success', data: body });
})
})
方法2-
app.post('/api/users', (req, res) => {
const body = req.body;
users.push(body)
fs.writeFile("./users.json", JSON.stringify(users), (err) => {
if (err) {
console.log(err)
}
})
return res.json({ status: 'success', data: body });
})
据我了解,方法 1 中的 return 语句适用于
callback
方法 fs
的 writeFile
fn 参数。而方法 2 中的 return 语句是为 request handler
方法的 POST
fn 显式定义的。并且 res.send()
与 req 一起使用。处理程序 fn。
这两种方法有什么区别吗?哪一种是正确的方法?它们本质上执行相同的功能吗?
fs.writeFile
是异步的。因此,方法之间的主要区别在于,
方法 1 更安全,但可能更慢。
在方法 1 或方法 2 中使用
return
语句并不重要。两者都:
fs.writeFile
回调,而express请求处理程序忽略返回值。