POST请求无法创建mongoose文档(express环境):无报错但数据未保存
问题排查与修复方案
1. 表单提交逻辑错误
你使用<a>标签作为提交入口,<a>标签的默认行为是跳转链接(空href会触发当前页面刷新),不会触发表单的POST提交逻辑,表单数据根本没有发送到后端接口。
修复方案:将<a>标签替换为原生表单提交按钮:
<button type="submit" class="button button--flex"> 发送消息 <i class="fas fa-paper-plane button_icon"></i> </button>
2. textarea标签name属性冲突
你的textarea标签重复定义了name属性,第一个name=""为空,浏览器会优先识别靠前的属性,导致留言字段不会随表单提交,req.body.message拿不到对应值。
修复方案:删掉多余的空name属性:
<textarea id="" cols="0" rows="7" name = "message" class="contact_input"></textarea>
3. 补充MongoDB连接状态校验
现有代码没有监听MongoDB连接结果,如果本地MongoDB服务未启动、连接地址错误,你不会收到报错提示,自然无法写入数据。
修复方案:在mongoose.connect后新增连接状态监听:
mongoose.connect('mongodb://localhost:27017/ContactPage'); const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB连接错误:')); db.once('open', () => console.log('MongoDB连接成功'));
4. 补充错误日志方便定位
现有catch块没有打印错误原因,出现问题无法快速定位。修改save逻辑的错误捕获:
myData.save().then(()=>{ res.send("提交成功:" + JSON.stringify(req.body)) }).catch((err)=>{ console.error("数据保存失败:", err) res.status(400).send("保存失败:" + err.message); });
内容的提问来源于stack exchange,提问作者Tayyaba Afzal
相关产品推荐
相关产品推荐

