You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express+Mongoose通过POST向MongoDB写数据失败问题排查

问题描述

我希望通过Express服务器的POST方法向MongoDB写入数据,已完成以下配置:

1. Mongoose模型定义

const mongoose=require("mongoose")

const LogInSchema=new mongoose.Schema({
    name:{
        type:String,
        required:true
    },
    password:{
        type:String,
        required:true
    }
})

const user=new mongoose.model("UserList", LogInSchema)

module.exports=user

2. 数据库连接脚本

const mongoose=require("mongoose")

function connectdb() {
    
mongoose.connect("mongodb://localhost:27017/User")
.then(()=>{
    console.log("connected to db");
})
.catch(()=>{
    console.log("There was a problem");
})}

module.exports = {connectdb};

3. 两个POST接口尝试写入数据

第一个接口:

app.post("/signup",async (req,res)=>{
    const data={
        name:req.body.name,
        password:req.body.password,
    }
    console.log(data)
    await user.insertMany([data])
})

第二个接口:

app.post("/signup",async (req,res)=>{
    const data = new user(req.body);
    console.log(data)
      try {
    await data.save();
    res.send(data);
  } catch (error) {
    res.status(500).send(error);
  }
})

当前状态:MongoShell中已创建User数据库,终端能打印输入的数据,浏览器也能返回数据,但使用db.User.find()查询时,数据库中无数据。

疑问:await user.insertMany([data])的写法是否正确?为何数据未写入数据库?

问题分析与解决

1. insertMany写法的正确性

await user.insertMany([data])语法本身没问题,但这个接口存在两处缺陷:

  • 未捕获插入异常,出错后无法定位问题
  • 未给客户端返回响应,请求会长期挂起

建议修改为:

app.post("/signup",async (req,res)=>{
    const data={
        name:req.body.name,
        password:req.body.password,
    }
    console.log(data)
    try {
        await user.insertMany([data]);
        res.status(201).send("数据插入成功");
    } catch (err) {
        res.status(500).send("插入失败:" + err.message);
    }
})

2. 数据查不到的核心原因

你用db.User.find()查询是错误的,Mongoose会自动将模型名称转为小写复数形式作为集合名:

  • 你的模型名为UserList,对应的集合实际是userlists
  • 在User数据库中,正确的查询命令应该是:
db.userlists.find()

3. 第二个接口的说明

第二个接口的写法是Mongoose保存数据的标准流程,new user(req.body)创建实例后调用save(),且已处理异常和响应,只要请求参数符合Schema要求,数据会正常写入userlists集合。

内容的提问来源于stack exchange,提问作者coldstone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:30:13