mongoose passport反序列化的新方法是什么样的?

wkyowqbh  于 2023-04-21  发布在  Go
关注(0)|答案(1)|浏览(94)

在我下面的一个简单的MVC教程https://blog.logrocket.com/building-structuring-node-js-mvc-application/中构建一个登录认证系统.
直到几天前,我的代码中还有一个可以工作的序列化和反序列化部分

passport.serializeUser((user, done) => {
    done(null, user.id);
  });
  
  passport.deserializeUser(async (id, done) => {
    
    User.findById(id, (error, user) => {
      done(error, user);
    });

  });

最近运行代码,我开始得到错误Model.findById() no longer accepts a callback现在我明白了,新的方法将使用写异步和等待。然而,我无法找到一个样本在线指导我如何来写代码。我可以在这里得到帮助吗?

ttisahbt

ttisahbt1#

您的问题与其说是Passport问题,不如说是Mongoose问题,它现在使用promise而不是回调。
要转换代码,可以使用async/await处理promise,但仍需要调用passport.deserializeUser提供的回调:

passport.deserializeUser(async (id, done) => {
  try {
    return done(null, await User.findById(id));
  } catch(error) {
    return done(error);
  } 
});

相关问题