我有一个异步函数,它接受从 headers.authorization 发送的不记名令牌并返回当前连接的用户信息。
exports.me = async (req, res) => {
const accessToken = req.headers.authorization;
const bearer = accessToken.split(" ");
const bearerToken = bearer[1];
req.token = bearerToken;
// header take
jwt.verify(bearerToken, process.env.SECRET_KEY, function (err, decoded) {
if (decoded) {
const now = new Date();
User.findOne({ _id: decoded.id })
.select("firstName lastName email avatar birthday _id")
.then((user) => {
return res.status(200).json(user);
})
.catch((err) => {
return res.status(404).json(err);
});
}
});
};
我想直接从'me()'函数中获取userId,而不是从下一个函数的前面请求req.params.userId >
exports.getEvents = async (req, res) => {
const allEvents = await Events.find({ owner: req.params.userId })
.then((events) => {
return res.status(200).json(events);
})
.catch((err) => {
return res.status(404).json(err);
});
};
答案 0 :(得分:0)
通过在 req.body 中设置 id 并将 me 函数作为中间件传递来解决问题
User.findOne({ _id: decoded.id })
.select("firstName lastName email avatar birthday _id")
.then((user) => {
req.body.userId = user._id
next();
})