Mongoose无法在MongoDB中保存tasks数组问题求助
问题解决:MongoDB仅保存title字段,tasks数组未存储的原因及修复方案
问题原因
核心问题是字段名不匹配:
- Mongoose Schema(ToDoModel)里定义的数组字段是
tasks - 但控制器中从
req.body解构的是toDoTasks,调用create时传入的也是toDoTasks
Mongoose默认会过滤Schema中未定义的字段,因此toDoTasks不会被写入数据库,最终导致tasks数组无法存储。
修复方案
修改控制器代码,将解构和传入的字段名统一为tasks,与Schema定义保持一致:
//importing model const toDoModel = require('../models/ToDoModel'); //creating controller function const createToDoController = async (req,res)=>{ try{ // 解构时改用tasks,和Schema字段名对齐 const {title, tasks} = req.body; if(!title) //input validation { throw new Error("Please provide the title"); } // 创建文档时传入tasks const newToDo = await toDoModel.create({ title, tasks }); res.status(201).json({ success: true, message: "ToDo Created Successfully", newToDo, }); } catch(err){ res.status(500).json({ success: false, message: "Unable to perform create operation", error: err.message }) } } module.exports = createToDoController;
额外验证点
确保Postman发送的JSON数据中数组字段为tasks,与你提供的示例一致:
{"title": "my first test59","tasks": ["task1","task2","task3"]}
修改完成后,Mongoose就能正确识别并存储tasks数组了。
内容的提问来源于stack exchange,提问作者Indratej Reddy
相关产品推荐
相关产品推荐

