【问题标题】:Creating New Child Added To The Array Field创建添加到数组字段的新子项
【发布时间】:2021-10-29 18:48:03
【问题描述】:

我不确定这是创建对象的正确查询,因为一旦我使用我的 Postman,它就会返回 undefined。

这是我的架构。

import mongoose from 'mongoose';

    const todoSchema = mongoose.Schema({
        username: {
            type: String,
        },
        password: {
            type: String,
        },
        task: [{
            id: mongoose.Types.ObjectId,
            post: String,
        }],
        time: {
            type: Date,
            default: Date.now,
        }
    });
    
    const TodoModels = mongoose.model('TodoModels', todoSchema);
    
    export default TodoModels;

这是我的邮递员。我正在使用补丁,因为我试图在现有用户上添加对象。

    {
        "task": [
                {
                "post": "task"
            }
        ]
    }

这是我添加新对象数组字段的方法。

    export const addTask = async (req,res) => {
        const { id } = req.params;
 
        if(!mongoose.Types.ObjectId.isValid(id)) return res.status(404).json(`Invalid ID`);
    
        const updatedPost = await TodoModels.findByIdAndUpdate(id,{$push:{task:                                                                 
        {post: req.body.task.post }}},{ new: true });
    
        res.json(updatedPost);
    }

不幸的是,req.body.task.post 返回 undefined。

【问题讨论】:

    标签: node.js mongodb express mongoose postman


    【解决方案1】:

    req.body.task 是一个数组。所以你必须用req.body.task[0].post访问post

    const updatedPost = await TodoModels.findByIdAndUpdate(id,{$push:{task:{post: req.body.task[0].post }}},{ new: true });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2021-07-05
      • 1970-01-01
      • 2021-11-11
      相关资源
      最近更新 更多