Позвольте 'сказать, что ваш projectMembers находится внутри модели с именем Project.
Вы можете установить требуемое сообщение об ошибке в схеме следующим образом:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const projectSchema = new Schema({
name: {
type: String,
required: true
},
projectMembers: [
{
user: {
type: Schema.Types.ObjectId,
ref: "User",
required: [true, "User is required"]
},
userRole: {
type: Schema.Types.ObjectId,
ref: "UserRole",
required: [true, "User Role is required"]
}
}
]
});
const Project = mongoose.model("Project", projectSchema);
module.exports = Project;
А в маршруте после проекта вы можете использоватьМетод mongoose doc.validateSync () для проверки.
Вот пример:
router.post("/project", async (req, res) => {
const { name, projectMembers } = req.body;
const project = new Project({ name, projectMembers });
const { errors } = project.validateSync();
if (errors) {
let convertedErrors = [];
for (field in errors) {
convertedErrors.push(errors[field].message);
}
return res.send({ errors: convertedErrors });
}
//todo: do whatever you want
res.send();
});
Если вы отправляете запрос без роли пользователя на этот маршрут с этим телом:
{
"name": "project name",
"projectMembers": [{
"user": "5dc12a0aa875cd0ca8b871ea"
}]
}
Вы получите этот ответ:
{
"errors": [
"User Role is required"
]
}
И если вы отправите запрос без роли пользователя и пользователя на этот маршрут с этим телом:
{
"name": "project name",
"projectMembers": [{}]
}
Вы получите этоответ:
{
"errors": [
"User Role is required",
"User is required"
]
}