You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:22:34