Node.js POST请求不仅发送对象,还发送对象数组

时间:2020-08-11 18:52:29

标签: javascript node.js mongodb mongoose

如您在图片中看到的,它什么也没保存。 POST请求正在运行,但是我发送给后端的数据仅保存具有ID的新对象,而不保存我提供的数据,我的意思是对象数组。

我没有任何错误,或者状态还可以。我正在与邮递员测试。 这是邮递员的发帖请求enter image description here

我将添加一些代码。

这是模型。

#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,
            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);

2 个答案:

答案 0 :(得分:1)

您正在发送对象数组,但是尝试使用点符号将它们读取为对象。您需要通过在方括号中提供索引来将它们读取为数组。我不会介绍您的所有资产,但这是您需要做的要点。

  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
        }],

`

答案 1 :(得分:1)

这是因为在创建模型时,您仅传递了一个用于PersonalData,技能和教育的元素。试试这样的东西

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