NextAuth : 使用 NextAuth 时无法查询用户模型

Posted

技术标签:

【中文标题】NextAuth : 使用 NextAuth 时无法查询用户模型【英文标题】:NextAuth : Unable to query User model, when using NextAuth 【发布时间】:2022-01-07 06:57:15 【问题描述】:

我正在为我的 Nextjs/MongoDB 应用程序使用 NextAuth。当我尝试在 Api 文件中查询用户记录时出现错误。

import Users from '../../../model/user';

let userId = query.id;
const userData = await Users.findOne(_id:userId);
console.log('userData ',userData);

我收到以下错误:

error :  _model_user__WEBPACK_IMPORTED_MODULE_1__.default.findOne is not a function

【问题讨论】:

【参考方案1】:

    query 是什么?我认为您需要 req.query.id,因为您在 API 请求和响应中有 reqres

    您需要将userId 转换为ObjectId

    import Users from '../../../model/user';
    import  ObjectId  from 'bson';
    
     ...your method of handler, eg get, post, delete etc
    
    //if you have name [id].tsx, for [pid].tsx you need req.query.pid
    let userId = req.query.id;
    
    //you need to transform only if you are searching by _id field
    const userData = await Users.findOne("_id": ObjectId(userId));
    if (userData.?_id)
     res.status(200).json(userData)
    
    else
     res.status(500).json('User data not found')
    
    

【讨论】:

以上是关于NextAuth : 使用 NextAuth 时无法查询用户模型的主要内容,如果未能解决你的问题,请参考以下文章

NextAuth.js:JWT 秘密破解应用程序

添加自动前缀后,社交登录(nextauth)无法使用

NextAuth 与自定义凭据提供程序不创建会话

如何将 api 错误返回到 NextAuth.js 中的登录组件

在 Apollo Server 上下文中获取 NextAuth.js 用户会话

会话在客户端未定义,尽管在 NextAuth.js v4 beta 中的服务器端可用