Я пытаюсь создать внутренний сервис для потенциального портфеля, используя node.js, для обработки проектов, размещенных на странице.Я хочу, чтобы приложение имело отдельную модель для хранения категорий, а схема моего проекта содержала массив категорий.Это для конечной точки сообщения.
const projectSchema = new mongoose.Schema({
title: {
type: String,
required: true,
minlength: 2,
maxlength: 50
},
collaborators: {
type: [String],
defualt: []
},
categories: {
type: [categorySchema]
},
lastUpdated: {
type: Date,
default: Date.now
}
});
Это мой проект Schema.Проблема, я думаю, заключается в том, когда я пытаюсь проверить ввод с помощью Joi.Потому что приложение работает, если я использую только одну категорию вместо массива категорий ...
function validateProject(project) { const schema = {
title: Joi.string()
.min(2)
.max(50)
.required(),
collaborators: Joi.array().items(Joi.string()),
categoryIds: Joi.array().items(Joi.objectId())
};
return Joi.validate(project, schema);
}
Разве невозможно проверить массив objectId таким образом?
Я хочучтобы иметь возможность публиковать проекты, подобные этому:
{
"title":"Test1",
"collaborators": [
"Name1",
"Name2",
"Name3"
],
"categoryIds": [
"5b7fa72a393c3c14f04066c6",
"5b7fa76a7a714121b40f2266"
]
}
Массив строк работает, но по какой-то причине он просто зависает, когда я пытаюсь использовать массив objectIds, и я не вижу никаких непосредственных ошибок...
Мои конечные точки сообщений выглядят так:
router.post("/", [auth, admin], async (req, res) => {
const { error } = validate(req.body);
if (error) res.status(400).send(error.details[0].message);
const categories = Category.find({
_id: { $in: req.body.categoryIds }
});
if (!categories)
res.status(400).send("Category with the given id was not found.");
let project = new Project({
title: req.body.title,
collaborators: req.body.collaborators,
categories
});
project = await project.save();
res.send(project);
});
Все зависимости требуются / импортируются, поэтому это не должно быть проблемой