MERN栈登录函数无法获取req.body,注册功能正常求助
MERN栈登录功能异常排查求助
我正在用MERN栈为应用添加认证功能,后端注册功能已正常实现,但登录函数存在异常:数据库中明确存在目标用户,用Postman测试却每次报错。尝试仅执行用户查找(不做密码验证)也会抛出错误,且确认邮箱确实存在于数据库中。
相关代码
const jwt = require('jsonwebtoken'); const bcrypt = require('bcryptjs') const asyncHandler = require('express-async-handler') let User = require('../models/user.model') const registerUser = asyncHandler(async (req, res) => { const {name, email, password} = req.body //validate if(!name || !email || !password) { res.status(400) throw new Error("Please add all fields") } const userExists = await User.findOne({email}) if(userExists){ res.status(400) throw new Error("User already exists") } //hash password const salt = await bcrypt.genSalt(10) const hashedPassword = await bcrypt.hash(password, salt) //create new user const user = await User.create({ name : name, email : email, password : hashedPassword }) if (user){ res.status(201).json({ _id: user.id, name: user.name, email: user.email }) } else { res.status(400) throw new Error("Invalid user data") } }) const loginUser = asyncHandler(async (req, res) => { const { email, password } = req.body // Check for user email const user = await User.findOne({ email }) if (user && (await bcrypt.compare(password, user.password))) { res.json({ _id: user.id, name: user.name, email: user.email }) } else { res.status(400) throw new Error('Invalid credentials') } }) const getUser = asyncHandler(async (req, res) => { res.json("getUser") }) router.route('/').post(registerUser) router.route('/login').post(loginUser) module.exports = router
Postman请求截图

我已检查拼写和路由均无问题,无法定位无法获取用户的原因,恳请相关指导!
排查建议
- 确认数据库连接状态:检查Node服务启动日志,确保和MongoDB的连接正常,没有断开或权限问题
- 核对邮箱大小写:MongoDB默认查询区分大小写,检查Postman请求的邮箱和数据库中存储的邮箱是否完全一致(包括大小写)
- 检查User模型定义:确认
user.model.js中email字段的类型为String,没有设置特殊的索引或验证规则导致查询失败 - 添加调试日志:在
loginUser函数中添加console.log('查询邮箱:', email)和console.log('查询结果:', user),查看实际查询参数和返回结果 - 验证错误捕获逻辑:确认
asyncHandler是否正确捕获了数据库查询的异步错误,可尝试直接在查询语句外包裹try/catch手动捕获异常 - 核对路由完整路径:如果该路由文件挂载了前缀(如
/api/users),Postman请求URL需包含前缀,例如POST /api/users/login
内容的提问来源于stack exchange,提问作者01nowicj
相关产品推荐
相关产品推荐

