#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) => { ... }