【发布时间】:2021-08-15 09:49:45
【问题描述】:
你好 StackOverFlow 军队, 我得到了
标头发送到客户端后无法设置
此代码中有错误。
getUserInfo: async (req, res) => {
try {
const { id } = req.user;
// Check is User Data present in Redis
redis_client.GET("USER_" + id, (err, user) => {
if (err) {
console.log(err.message);
return res.status(500).json({ msg: "Server Error!" });
}
// If present Return User data
// Return User data
user = JSON.parse(user);
if (user) return res.json({ user });
});
// Else Fetch Data from Database
const user = await Users.findById(id).select("-password");
// Set to Redis
redis_client.SET(
"USER_" + id.toString(),
JSON.stringify(user),
"EX",
10,
(err, reply) => {
if (err) {
console.log(err.message);
return res.status(500).json({ msg: "Server Error!" });
}
}
);
// Return User data
res.json({ user });
} catch (error) {
return res.status(500).json({ msg: error.message }); // Line 77
}
},
第 77 行出错。
请帮帮我,我不明白为什么会这样。我正在发送响应,并且发送响应之间没有冲突。将用户数据存储在 redis 中以便更快地获取是否是一种好习惯。 到期时间非常短,例如 10 秒,因此如果用户垃圾邮件刷新,它将有助于更快地获取。任何建议表示赞赏。
【问题讨论】:
-
将所有回调函数转换为返回 Promise 的新函数。
标签: node.js mongodb express redis try-catch