如何解决Node.js POST请求不仅发送对象,还发送对象数组
如您在图片中看到的,它什么也没保存。 POST请求正在运行,但是我发送给后端的数据仅保存具有ID的新对象,而不保存我提供的数据,我的意思是对象数组。
我没有任何错误,或者状态还可以。我正在与邮递员测试。 这是邮递员的发帖请求
我将添加一些代码。
这是模型。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_WORD_LEN 1024
/**
* Note: this could also handle if spaces are the end
*
*/
int main() {
char* text = "some text ";
char* text2 = malloc(sizeof(char) * MAX_WORD_LEN); // note: sizeof(char),cause string
char *itr = text; // its better to put a seperate iterator to iterate over strings in c
char *itr2 = text2; // declare a iterator to iterate over text2
while (*itr != '\0') {
*itr2 = *itr;
// increase both iterator
itr++;
itr2++;
// there's no need to provide a if here,just run while loop
// also notice,previously by increasing "text" pointer you may reach the end
// but,you're not checking it
// but,you should check it
while(*itr != '\0' && isspace(*itr)){
itr++; // while iterating
}
// there's no need to increase "itr" here
}
// finally at a null char to the end of text2
*itr2 = '\0';
printf("text: %s\n\n",text);
printf("text2: %s\n",text2);
// at last free allocated memory
free(text2);
return 0;
}
这是控制器。
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,description: String
}],skills: [{
_id: mongoose.Schema.Types.ObjectId,user: {
type: mongoose.Schema.Types.ObjectId,ref: "User"
},});
module.exports = mongoose.model('ModelSchema',dataModelScheme);
解决方法
您正在发送对象数组,但是尝试使用点符号将它们读取为对象。您需要通过在方括号中提供索引来将它们读取为数组。我不会介绍您的所有资产,但这是您需要做的要点。
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
}],
`
,这是因为在创建模型时,您仅传递了一个用于PersonalData,技能和教育的元素。试试这样的东西
const modelData = new ModelData({
_id: new mongoose.Types.ObjectId(),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
};
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。