创建添加到数组字段的新子项

Creating New Child Added To The Array Field

我不确定这是创建对象的正确查询,因为一旦我使用我的 Postman,它 returns 未定义。

这是我的架构。

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 returns 未定义。

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 });