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

POST请求返回201但创建新集合而非使用已有集合的问题求助

问题:Mongoose未使用指定集合,自动创建新集合

编辑说明:我已找到相关解决思路,对Model.js文件做了如下修改:

const MyTodoList = mongoose.model("MyTodoList", MyTodoListSchema, 'colltodolist');
module.exports = MyTodoList;

我通过Postman向运行在5035端口的后端发送POST请求,地址为http://localhost:5035/api/todos。请求返回状态码201(已创建),控制台显示请求成功,但系统没有更新已有集合,反而创建了新集合。

我的MongoDB Atlas中的数据库和集合信息:

  • 数据库名:dbtodolist
  • 集合名:colltodolist

发送请求后,系统没有向colltodolist中添加数据,而是新建了名为mytodolists的集合。

代码结构(MVC架构)

index.js

mongoose.connect("mongodb+srv://sidrah:sidrah@cluster0.yidsza6.mongodb.net/dbtodolist?retryWrites=true&w=majority")
  .then(() => {
    console.log('Database connected');
  })
  .catch((error) => {
    console.log('Error connecting to database');
  });

Model.js(修改前)

const mongoose = require("mongoose");

const MyTodoListSchema = new mongoose.Schema({
  todo: {
    type: String,
    default: "",
    required: true
  }
});
const MyTodoList = mongoose.model("MyTodoList", MyTodoListSchema);
module.exports = MyTodoList;

Controller.js

const mongoose = require('mongoose')
const MyTodoList = require('../models/model');

exports.createTodo = (req, res) => {
  const todo = new MyTodoList({
     todo: req.body.todo
  });
  return todo
    .save()
    .then((newTodo) => {
      return res.status(201).json({
        success: true,
        message: 'New todo list created successfully',
        MyTodoList: newTodo,
      });
    })
    .catch((error) => {
      res.status(500).json({
        success: false,
        message: 'Server error. Please try again.',
        error: error.message,
      });
    });
}  

//get all todos
exports.getAllTodo = (req, res) => {
      res.setHeader("Access-Control-Allow-Origin", "*")
      res.setHeader("Access-Control-Allow-Credentials", "true");
      res.setHeader("Access-Control-Max-Age", "1800");
      res.setHeader("Access-Control-Allow-Headers", "content-type");
      res.setHeader( "Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, PATCH, OPTIONS" ); 
  MyTodoList.find()
    .select('taskId todo priority')
    .then((allTodo) => {
      return res.status(200).json({
        Todo: allTodo
      });
      
    })
    .catch((err) => {
      res.status(500).json({
        success: false,
        message: 'Server error. Please try again.',
        error: err.message,
      });
    });
  }

Router.js

const express = require("express");
const cors = require("cors");
const todolist_controller = require('../controllers/controller')
const router = express.Router();
router.post('/todos', todolist_controller.createTodo);
router.get('/todos', todolist_controller.getAllTodo);
module.exports = router;

恳请各位提供解决方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:50:29