Node API路由注册MongoDB用户时无返回状态码该如何排查?
问题根因
代码成功逻辑分支仅调用了res.status(200)方法,该方法仅用于设置HTTP响应状态码,不会主动向客户端发送响应内容、结束请求流程,因此请求会一直处于待响应状态,表现为无返回内容。
修复方案
在res.status(200)后补充send()或json()方法,主动发送响应内容结束请求,以下是修改后的可用代码:
const express = require("express"); const User = require("../models/User"); const router = express.Router() router.post("/users",async (req, res) => { // 创建用户实例 const user= new User({ username: req.body.username, password: req.body.password }); // 向数据库保存用户 user .save(user) .then(data => { // 补充json方法发送响应内容,可根据业务需求自定义返回字段 res.status(200).json({ message: "用户创建成功", userData: data }); }) .catch(err => { res.status(500).send({ message: err.message || "创建用户时发生未知错误。" }); }); }) module.exports = router
可选优化
你当前的路由已经声明了async关键字,可以改用更简洁的async/await写法,避免Promise回调嵌套:
router.post("/users", async (req, res) => { try { const user = new User({ username: req.body.username, password: req.body.password }); const savedUser = await user.save(); res.status(200).json({ message: "用户创建成功", userData: savedUser }); } catch (err) { res.status(500).send({ message: err.message || "创建用户时发生未知错误。" }); } })
安全提示
用户密码不要明文存入数据库,建议使用bcrypt等加密工具对密码做哈希处理后再存储,避免数据泄露导致的安全风险。
内容的提问来源于stack exchange,提问作者user8716887
相关产品推荐
相关产品推荐

