Express搭建注册页存储数据到MongoDB报错,页面加载无响应且数据库未创建
问题修复方案
核心错误原因
你代码中MongoDB连接的端口配置错误,MongoDB默认服务端口为27017,你误写为27107,导致服务端无法和数据库建立连接,出现请求一直挂起、数据库未创建的问题。
具体修复步骤
- 第一步:修改数据库连接地址,修正端口号,同时建议添加连接状态监听和新版mongoose必填的配置项:
// 把原来的mongoose.connect行替换为下面的内容 mongoose.connect("mongodb://localhost:27017/userDB", { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log("数据库连接成功")) .catch(err => console.log("数据库连接异常:", err))
- 第二步:优化注册接口的错误处理逻辑,避免出错时前端一直处于加载状态:
app.post("/register", function(req, res){ const newUser = new User({ email: req.body.username, password: req.body.password }); newUser.save(function(err){ if (err) { console.log(err); // 出错时给前端返回响应 res.status(500).send("注册失败,请稍后重试"); } else { res.render("secrets"); } }); });
- 第三步:提前确认MongoDB服务已经正常启动,可在cmd中执行
mongosh命令验证是否能正常进入数据库交互命令行。
修改完成后重启Node服务,再次提交注册请求,成功写入第一条数据后MongoDB会自动创建userDB数据库,执行show dbs就可以看到对应数据库了。
内容的提问来源于stack exchange,提问作者Đức Seven
相关产品推荐
相关产品推荐

