node js controller как сохранить данные для массива объектов

#node.js #mongoose #mongoose-schema

#node.js #мангуст #mongoose-схема

Вопрос:

 const mongoose = require('mongoose');

const addressSchema = mongoose.Schema({
    type: String,
    street: String,
    city: String,
    state: String,
    country: String,
    postalcode: Number

});


const createStudentSchema = mongoose.Schema({
    admisionnum: Number,
    first: String,
    last: String,
    phone: String,
    address : [addressSchema],
    isActive : { type : Boolean, default: true}

}, {
    timestamps: true
});

module.exports = mongoose.model('createStudent', createStudentSchema);
  

Addreschema для адреса в массиве объектов. Я получаю null в выходных данных для json приведенного ниже.

Это json входные данные

 {
    "admisionnum":"1",
    "first": "Dan",
    "last": "HEllo",
    "phone": "9000909575",
    "address" : [
        {
            "type": "own",
            "street": "18 ksdhks",
            "city": "chennai",
            "state": "Tamil Nadhu",
            "country": "India",
            "postalcode": "600097"
        }
        ],
        "isActive": "true"
}
  

Response Json вывод

 {
    "isActive": true,
    "_id": "5c9e57f718e3de2ca4dd1d86",
    "admisionnum": 1,
    "first": "Jesus",
    "last": "christ",
    "phone": "9000909575",
    "address": [
        null,
        null,
        null,
        null,
        null,
        null
    ],
    "createdAt": "2019-03-29T17:37:59.291Z",
    "updatedAt": "2019-03-29T17:37:59.291Z",
    "__v": 0
}
  

Пожалуйста, помогите, как привязать данные для адреса. код контроллера приведен ниже

 exports.createStudent = (req, res) => {


    // Create a Note
    const CreateStudent = new createStudent({
        admisionnum: req.body.admisionnum,
        first: req.body.first,
        last: req.body.last,
        phone: req.body.phone,
        address : [

            req.body.address.type,
            req.body.address.street,
            req.body.address.city,
            req.body.address.state,
            req.body.address.country,
            req.body.address.postalcode

        ] ,
        isActive: req.body.type


    });

    // Save Note in the database
    CreateStudent.save()
    .then(data => {
        res.send(data);
    }).catch(err => {
        res.status(500).send({
            message: err.message || "Some error occurred while creating the Note."
        });
    });
};
  

Комментарии:

1. измените свой входной адрес на address: [ { ...//req.body ... } ] поскольку вы говорите, что схема адресов представляет собой массив объектов

Ответ №1:

Просто используйте address : req.body.address , и все должно работать нормально.

Поскольку ваш address является массивом, и вы также отправляете address массив в request , вам не нужно делать ничего другого.

Попробуйте это:

 const CreateStudent = new createStudent({
    admisionnum: req.body.admisionnum,
    first: req.body.first,
    last: req.body.last,
    phone: req.body.phone,
    address : req.body.address ,
    isActive: req.body.type


});