我不确定这是否是创建对象的正确查询,因为一旦我使用 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/