node.js - 创建添加到数组字段的新子项

标签 node.js mongodb express mongoose postman

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

这是我的架构。

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;

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

    {
        "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 返回未定义。

最佳答案

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

关于node.js - 创建添加到数组字段的新子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68993897/

相关文章:

node.js - 如何在自引用关联中实现外键约束?

mongodb - 在 Sitecore xDB 中存储自定义临时数据

javascript - 尝试设置 node.js Web 服务器

javascript - 如何指定本地源路径,例如total.js中node_modules中的 Angular

node.js - 如何require.resolve包目录?

javascript - 匹配 URL 的正则表达式 - 字符串末尾的数字,但也匹配字符串开头的字符

node.js - Google PeopleApi - CreateContact 方法参数无效

java - 用于java单元测试的嵌入式OrientDB服务器

mongodb - Azure DocumentDB 本地模拟器是否支持 mongodb 协议(protocol)?

javascript - 如何使用 Express 和 Node.js 从表单发送参数