Я пытаюсь сохранить массив объектов внутри mongodb с помощью mongoose и node, с простой проверкой и очень трудно с этим
Я определяю схему и настраиваемую функцию проверки следующим образом:
const mongoose = require("mongoose");
const fieldsSchema = mongoose.Schema({
title: {
type: String,
minlength: 2,
maxlength: 250,
},
list: {
type: Array,
primaryText: {
type: String,
minlength: 1,
maxlength: 250,
},
secondaryText: {
type: String,
minlength: 2,
maxlength: 250,
},
listType: {
type: String,
enum: ["listOne", "listTwo"],
minlength: 2,
maxlength: 250,
},
items: {
required: isListTypeTwo,
type: Array,
itemTitle: {
type: String,
minlength: 2,
maxlength: 250,
},
itemContent: {
type: String,
minlength: 2,
maxlength: 250,
},
},
},
});
function isListTypeTwo() {
if (this.listType === "listTwo") return true;
return false;
}
const Field = new mongoose.model("Field", fieldsSchema);
exports.fieldsSchema = fieldsSchema;
exports.Field = Field;
А затем я создаю такой почтовый маршрут:
const { Field } = require("../models/field");
const express = require("express");
const router = express.Router();
router.post("/", async (req, res, next) => {
let field = new Field({
title: req.body.title,
list: req.body.list,
});
field = await field.save();
res.send(field);
});
module.exports = router;
Я передаю свои данные JSON почтальону вот так:
{
"title": "title",
"list": [
{
"primaryText": "primaryText",
"secondaryText": "secondaryText",
"listType": "listOne"
},
{
"primaryText": "primaryText",
"secondaryText": "secondaryText",
"listType": "listTwo"
}
]
}
Вот несколько вопросов, которые я не могу решить и прошу вашей помощи:
Как я могу передать в свой маршрут правильно определенную структуру массива, так сказать, вместо:
list: req.body.list
, что-то более подробное (но, конечно, без доступа к каждому объекту вручную, например, ~ [0], ~ [1] и т. Д.) ?Почему моя проверка не работает?
Возможно, мне следует передать JSON каким-либо другим способом / структурой?
req.body.list
- person gerenef   schedule 02.02.2021true
, она все равно пройдет без каких-либо сообщений об ошибках. Я думаю, это связано с тем, как передаетсяreq.body.list
, но я не уверен - person gerenef   schedule 02.02.2021