Javascript Node.js POST请求发送对象数组而不仅仅是对象
正如你在图片中看到的,它什么也保存不了。POST请求正在工作,但我发送到后端的数据只保存ID为的新对象,而不是我提供的数据,我指的是对象数组 我没有任何错误或东西的状态是好的。我正在和邮递员测试这个。 这是邮递员的邮件请求 我将添加一些代码 这就是模型Javascript Node.js POST请求发送对象数组而不仅仅是对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,正如你在图片中看到的,它什么也保存不了。POST请求正在工作,但我发送到后端的数据只保存ID为的新对象,而不是我提供的数据,我指的是对象数组 我没有任何错误或东西的状态是好的。我正在和邮递员测试这个。 这是邮递员的邮件请求 我将添加一些代码 这就是模型 const mongoose = require("mongoose"); const dataModelScheme = new mongoose.Schema({ _id: mon
const mongoose = require("mongoose");
const dataModelScheme = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
personalData: [{
_id: mongoose.Schema.Types.ObjectId,
title: String,
firstName: String,
lastName: String,
email: String,
birthday: String,
telephone: Number,
driveLicense: String,
status: Number,
employmentType: String,
job: String,
}],
career: [{
_id: mongoose.Schema.Types.ObjectId,
name: String,
startDate: Number,
endDate: Number,
description: String,
}],
education: [{
_id: mongoose.Schema.Types.ObjectId,
name: String,
description: String
}],
skills: [{
_id: mongoose.Schema.Types.ObjectId,
name: String,
description: String
}],
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
});
module.exports = mongoose.model('ModelSchema', dataModelScheme);
这是控制器
async store(req, res) {
const { user_id } = req.headers;
const user = await User.findById(user_id);
if (!user) {
return res.status(400).json({ error: 'User does not exist'});
}
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),
user: user_id,
personalData: [{
_id: new mongoose.Types.ObjectId(),
title: req.body.personalData.title,
firstName: req.body.personalData.firstName,
lastName: req.body.personalData.lastName,
email: req.body.personalData.email,
birthday: req.body.personalData.birthday,
telephone: req.body.personalData.telephone,
driveLicense: req.body.personalData.driveLicense,
status: req.body.personalData.status,
employmentType: req.body.personalData.employmentType,
job: req.body.personalData.job,
}],
skills: [{
_id: new mongoose.Types.ObjectId(),
name: req.body.skills.name,
description: req.body.skills.description,
}],
education: [{
_id: new mongoose.Types.ObjectId(),
name: req.body.education.name,
description: req.body.education.description,
}],
});
modelData.save().then(result => {
res.status(201).json(result);
console.log(req.body.personalData, "req.body");
console.log(result, "result");
}).catch(error => {
res.status(500).json({error: error});
});
},
您正在发送一个对象数组,但正在尝试使用点符号将其作为对象读取。您需要通过在括号中提供索引将它们作为数组读取。我不会介绍你所有的财产,但这是你需要做的要点`
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),
user: user_id,
personalData: [{
_id: new mongoose.Types.ObjectId(),
title: req.body.personalData[0].title,
firstName: req.body.personalData[0].firstName,
lastName: req.body.personalData[0].lastName,
// DO similar for the rest of your properties
}],
`您正在发送一个对象数组,但试图使用点符号将其作为对象读取。您需要通过在括号中提供索引将它们作为数组读取。我不会介绍你所有的财产,但这是你需要做的要点`
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),
user: user_id,
personalData: [{
_id: new mongoose.Types.ObjectId(),
title: req.body.personalData[0].title,
firstName: req.body.personalData[0].firstName,
lastName: req.body.personalData[0].lastName,
// DO similar for the rest of your properties
}],
`这是因为在创建模型时,您只传递了一个有关个人数据、技能和教育的元素。试试这样的东西
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),
user: user_id,
personalData: req.body.personalData.map(personalData => {
return {
_id: new mongoose.Types.ObjectId(),
title: personalData.title,
firstName: personalData.firstName,
lastName: personalData.lastName,
email: personalData.email,
birthday: personalData.birthday,
telephone: personalData.telephone,
driveLicense: personalData.driveLicense,
status: personalData.status,
employmentType: personalData.employmentType,
job: personalData.job
};
}),
skills: req.body.skills.map(skill => {
return {
_id: new mongoose.Types.ObjectId(),
name: skill.name,
description: skill.description
};
},
education: req.body.education.map(education => {
return {
_id: new mongoose.Types.ObjectId(),
name: education.name,
description: education.description
};
}
});
这是因为在创建模型时,您只传递了一个有关个人数据、技能和教育的元素。试试这样的东西
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),
user: user_id,
personalData: req.body.personalData.map(personalData => {
return {
_id: new mongoose.Types.ObjectId(),
title: personalData.title,
firstName: personalData.firstName,
lastName: personalData.lastName,
email: personalData.email,
birthday: personalData.birthday,
telephone: personalData.telephone,
driveLicense: personalData.driveLicense,
status: personalData.status,
employmentType: personalData.employmentType,
job: personalData.job
};
}),
skills: req.body.skills.map(skill => {
return {
_id: new mongoose.Types.ObjectId(),
name: skill.name,
description: skill.description
};
},
education: req.body.education.map(education => {
return {
_id: new mongoose.Types.ObjectId(),
name: education.name,
description: education.description
};
}
});
那么GET请求会是怎样的呢?像这样的<代码>异步显示(req,res){const modelData=wait modelData.find().where({“user”:req.params.id}).exec();if(!modelData){return res.status(204).json({error:“No Data”});}return res status(200).send(modelData);}你几乎是对的:异步显示(req,res){const modelData=wait modelData.find({“user”:req.params.id}).exec();if(!modelData){res.status(204).json({error:“No Data”});return;}res.json(modelData);}我确实有一个小问题。如何比前端的接口模型更好。例如,GET请求如何?类似这样的?
async show(req,res){const modelData=wait modelData.find().where({“user”:req.params.id}).exec();if(!modelData){返回res.status(204).json({错误:“无数据”})}返回res.status(200).send(modelData);}
你几乎是对的:async show(req,res){const modelData=wait modelData.find({“user”:req.params.id}).exec();if(!modelData){res status(204).json({error:“No Data”});return;}res json.json(modelData);}我确实有一个小问题。与前端中的接口模型相比,性能如何。例如。是的,但是如果req.body.personalData[0]。title它将不会除0之外,而是1?您需要使用.map(),正如在数组上的另一个答案或循环中建议的那样。是的,但是如果req.body.personalData[0]会发生什么.title它将不是0而是1?您需要按照数组上另一个答案或循环中的建议使用.map()。