我正在尝试按照教程和代码学习更多关于使用 passport-jwt 和 mern 堆栈的身份验证的信息,来自这个博客教程:https://www.codingdeft.com/posts/react-authentication-mern-node-护照快递蒙戈/。当我使用用户名和密码登录时,它会给我一个令牌。并使用该令牌,当我尝试使用以下逻辑注销时。我得到错误:
TypeError: user.refreshToken.id(...).remove is not a function
.
我不明白如何解决这个问题。
router.get("/logout", verifyUser, async (req, res, next) => {
const { signedCookies = {} } = req;
const { refreshToken } = signedCookies;
User.findById(req.user._id).then((user) => {
const tokenIndex = user.refreshToken.findIndex(
(item) => item.refreshToken === refreshToken
);
if (tokenIndex !== -1) {
user.refreshToken.id(user.refreshToken[tokenIndex]._id).remove()
}
try {
user.save();
res.clearCookie("refreshToken", COOKIE_OPTIONS);
res.send({ success: true, user: user.refreshToken._id })
} catch (error) {
res.statusCode = 500
res.send(error)
}
});
});