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
相关产品推荐
相关产品推荐

