• 1400/09/07

Validation کردن اطلاعات ارسالی به سرور :

سلام استاد خسته نباشید 

استاد من در پروژه ام یه سری داده به سمت سرور ارسال میکنم که میخوام توی سرور اعتبار سنجی شود اینکارا با Yup انجام دادم ولی مشکل من اینکه که مقادیر داخل Plans را اعتبار سنجی نمی کنه و اگه کابر خالی وارد کنه Yup هیچ خطایی نمیده .

 

اطلاعاتی که به سرور ارسال می شود به این شکل است

{
  Name: 'Kane Sherman',
  Website: 'https://www.dimatowobilujej.me',
  WorkPhone: '23322424242',
  Description: 'Doloribus vel dicta ',
  Category: [
    '618420d13c7542005a19107c',
    '619404e9099d67da638a8932',
    '619406c3f9d9906ee1236a0b'
  ],
  Logo: 'undefined',
  Plans: '[{"id":4077,"time":"12","conditions":"rem libero ipsum n"},
  {"id":8194,"time":"16","conditions":""},{"id":8159,"time":"24","conditions":""}]'
}

 

فایل  Validation 

const Yup = require("yup");

exports.schema = Yup.object().shape({
    Name: Yup.string()
        .required("نام شرکت گارنتی الزامی می باشد")
        .min(3, "نام شرکت گارنتی نباید کمتر از 3 کارکتر باشد"),
    WorkPhone: Yup.string()
        .min(10, "شماره تلفن شرکت گارنتی نباید کمتر از 10 کارکتر باشد")
        .max(11, "شماره تلفن شرکت گارنتی نباید بیشتر از 11 کاراکتر باشد"),
    Website: Yup.string().url("آدرس سایت معتبر نمی باشد"),
    Description: Yup.string().max(300, "توضیحات نباید بیشتر از 300 کارکتر باشد"),
    Plans: Yup.array(
        Yup.object().shape({
            time: Yup.string().required("زمان الزامی می باشد")
            .min(1, "مدت زمان پلن نباید کمتر از 1 کاراکتر باشد"),
            conditions: Yup.string().max(50, "شرایط نباید بیشتر از 50 کاراکتر باشد"),
        })
    ),
    Logo: Yup.object().shape({
        name: Yup.string().required("لوگو الزامی می باشد"),
        size: Yup.number().max(3000000, "لوگو نباید بیشتر از 3 مگابایت باشد"),
        mimetype: Yup.mixed().oneOf(
            ["image/jpeg", "image/png"],
            "تنها پسوندهای png و jpeg پشتیبانی می شوند"
        ),
    }),
});

 

Schema پایگاه داده 

const mongoose = require("mongoose");
const mongoosePaginate = require("mongoose-paginate-v2");

const { schema } = require("./secure/warrantyValidation");

const Warranty = mongoose.Schema(
  {
    Name: { type: String, required: true, trim: true },
    Website: { type: String, default: null, trim: true },
    WorkPhone: 
    		{ type: String, default: null, maxlength: 11, minlength: 10, trim: true },
    Description: { type: String, default: null, maxlength: 300, trim: true },
    Plans: [
      {
        time: String, required: true, trim: true,
        conditions: String, trim: true, maxlength: 50,
      }
    ],
    Logo: { type: String, default: '/images/icon/warranty-4848.png' },
    Category: 
    		[{ type: mongoose.Schema.Types.ObjectId, ref: "Category", required: true }],
  },
  {
    timestamps: true,
  }
);

Warranty.plugin(mongoosePaginate);

Warranty.statics.warrantyValidation = function (body) {
  return schema.validate(body, { abortEarly: false });
};

module.exports = mongoose.model("Warranty", Warranty);

 

استاد لطفا مشکل من را حل کنید.

  • 1400/09/11
  • ساعت 14:53

سلام دوست من

daysOfWeek: Yup.array()
    .of(
      Yup.object().shape({
        dayOfWeek: Yup.string(),
        checked: Yup.boolean(),
      })
    )

از of استفاده کن ببین مشکل برطرف میشه


  • 1400/09/11
  • ساعت 14:54

این لینک رو هم ببین


logo-enamadlogo-samandehi