ОПУБЛИКОВАТЬ массив объектов с помощью req.body parser

#node.js #mongodb #express #mongoose

#node.js #mongodb — монгодб #выражать #мангуст #mongodb #выразить

Вопрос:

Я пытаюсь отправить простой запрос, который включает в себя массив объектов. Я создал модель и передаю данные в соответствии с моделью. У меня возникли проблемы с доступом к параметрам тела, поскольку оно содержит массив данных. Я могу хранить данные о позиции с помощью req.body.tasks [0], что не является стандартным способом хранения деталей в mongodb. Я ищу стандартный способ хранения массива данных в mongodb

Контроллер:

 
let createBug = (req, res) => {
  console.log(req.body.tasks[0].subtask[0].description)
  for (var key in req.body) {
    if (req.body.hasOwnProperty(key)) {
      item = req.body[key];
      console.log(item);
    }
  }
  const createBug = new listModel({
    title: req.body.title,
    tasks: [{
      title: req.body.tasks[0].title,
      description: req.body.tasks[0].description,
      subtask: [{
        description: req.body.tasks[0].subtask[0].description
      }]
    }]
  }).save((error, data) => {
    if (data) {
      let apiResponse = response.generate(false, null, 201, data);
      res.status(201).send(apiResponse);
    } else {
      let apiResponse = response.generate(true, error, 404, null);
      res.status(404).send(apiResponse);
    }
  });
};
  

Тело:

 {
"title":"sample title",
"tasks":[{
    "title": "task 1",
    "description":"task1 description",
    "subtask":[{
         "description":"task3 description"
    }]
    }]   
}
  

Модель:

 const mongoose = require("mongoose");
const mySchema = mongoose.Schema;
let subtask = new mySchema({
  description: String
})

let taskdata = new mySchema({
  title: String,
  description: String,
  subtask: [subtask]
});

let listSchema = new mySchema({
  title: {
    type: String,
    require: true,
  },

  tasks: [taskdata],

  owner: {
    type: mongoose.Schema.Types.ObjectId,

    ref: "users",
  }
});
module.exports = mongoose.model("list", listSchema);
  

Ответ №1:

Я думаю, что вы здесь немного усложняете. Тело запроса точно соответствует определениям модели, поэтому вы можете просто передать req.body объект в свою модель mongoose:

 const createBug = new listModel(req.body).save((error, data) => { ... }