سلام استاد
استاد من با Yup یه schema طراحی کردم ولی یه چند تا مشکل داره
اطلاعاتی که ارسال میشه به این شکل هست
{
"title": "title",
"body": "body",
"image": "604226ae98b3f00a9cdb50a8",
"category": "60410cbc70a6f52fb4e3bce3",
"status": "public",
"actor": [
{"idActor":"60420e33dc029327d4522917"},
{"idActor":"60420e77337f1e27e4278538"},
{"idActor":"6042180625c39336c8f57886"}
],
"files": [
{"file":"603fa2af6adfc805483ea5e4"},
{"file":"603fa30400bd6734a0589bb9"},
{"file":"603fa3311242441594373bee", "Description":"قسمت سوم"}
]
}
schema که من با Yup درست کرم
const Yup = require("yup");
exports.schema = Yup.object().shape({
title: Yup.string()
.required("عنوان مراسم الزامی می باشد")
.min(5, "عنوان مراسم نباید کمتر از 5 کارکتر باشد")
.max(100, "عنوان مراسم نباید بیشتر از 100 کاراکتر باشد"),
body: Yup.string().required("مراسم جدید باید دارای محتوا باشد"),
image: Yup.string().required("مراسم جدید باید دارای عکس باشد"),
category: Yup.string().required("دسته بندی الزامی است"),
status: Yup.mixed().oneOf(
["private", "public"],
"یکی از 2 وضعیت خصوصی یا عمومی را انتخاب کنید"
),
actors: Yup.array(
Yup.object({
actor: Yup.string().required("مجری مراسم الزامی می باشد"),
})
).required("!مراسم باید مجری داشته باشد"),
files: Yup.array(
Yup.object({
file: Yup.string().required("مدیا الزامی است"),
Description: Yup.string(),
})
).required("!مراسم باید رسانه داشته باشد"),
});
schema پایگاه داده
const mongoose = require("mongoose");
const { schema } = require("./secure/riteValidation");
const riteSchmea = new mongoose.Schema({
title: {
type: String,
trim: true,
unique: true,
required: true,
minlength: 5,
maxlength: 100,
},
body: {
type: String,
required: true,
},
image: {
type: mongoose.Schema.Types.ObjectId,
ref: "Multimedia",
required: true,
},
category: {
type: mongoose.Schema.Types.ObjectId,
ref: "Category",
required: true,
},
status: {
type: String,
default: "public",
enum: ["private", "public"],
},
actors: [
{
idActor: {
type: mongoose.Schema.Types.ObjectId,
ref: "Actors",
required: true,
},
},
],
files: [
{
file: {
type: mongoose.Schema.Types.ObjectId,
ref: "Multimedia",
required: true,
},
Description: String,
},
],
writer: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
createdAt: {
type: Date,
default: Date.now,
},
updated: {
type: Date,
default: Date.now,
},
});
riteSchmea.statics.riteValidation = function (body) {
return schema.validate(body, { abortEarly: false });
};
module.exports = mongoose.model("Rite", riteSchmea);
خوب استاد بریم سر سوال 😊😁
استاد مشکل من اونجاست که 😭 اگه فیلد های actors و files به صورت خالی ارسال بشه ذخیره میشه و اصلا Yup نمی تونه هندل کنه و error را بفرسته
می دونم مشکل من توی Yup schema هست میشه کمکم کنید 🙏🏻🙏🏻
مرسی ممنون
استاد یه سوال دیگه اگه بخواهیم توی Yup بررسی کنیم توی پارامتر های ارسالی یه فیلید وجود نداشته باشه . مثلا
توی درخواست ارسالی به سرور اگر پارامتری به نام view وجود داشت خطا بده
را چطوری باید پیاده سازی کنم ؟