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

Posted

技术标签:

【中文标题】创建添加到数组字段的新子项【英文标题】: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。

【问题讨论】:

【参考方案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 );

【讨论】:

以上是关于创建添加到数组字段的新子项的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose — 使用聚合创建具有 $sum 的新属性

快速创建一个对象的新实例并将其放入一个带有 TabBarView 按钮的数组中

在 MVC 中将子项添加到与父项相同的表单上

多个子项的处理API部分添加

删除movieclip子项的动作脚本

如何重新创建弹出视图?