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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:31:12