Passport反序列化新写法求助:Model.findById()不再支持回调
解决Passport反序列化中
Model.findById()不支持回调的问题 直接把你的deserializeUser改成async/await配合try/catch的写法即可,完整代码如下:
passport.serializeUser((user, done) => { done(null, user.id); }); passport.deserializeUser(async (id, done) => { try { const user = await User.findById(id); done(null, user); } catch (error) { done(error); } });
关键修改点:
- 移除
findById的回调参数,改用await直接获取查询结果 - 用
try/catch捕获数据库查询可能出现的异常,将错误通过done(error)传递给Passport - 查询成功时,通过
done(null, user)把用户对象传递给Passport
这样就适配了Mongoose最新版本的API要求,同时保持Passport序列化/反序列化的逻辑正常运行。
内容的提问来源于stack exchange,提问作者phoenix
相关产品推荐
相关产品推荐

