创建添加到数组字段的新子项
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 });
我不确定这是创建对象的正确查询,因为一旦我使用我的 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 });