Model Mongoose dan Validasi Joi

const mongoose = require("mongoose");
const Joi = require("joi");
Joi.objectId = require("joi-objectid")(Joi);

const { Schema } = mongoose;

const postSchema = new Schema(
  {
    userId: {
      type: mongoose.Schema.ObjectId,
      ref: "user",
    },
    name: {
      type: String,
    },
    description: {
      type: String,
    },
    recipeStepValue: {
      type: Array,
    },
    setpsCount: {
      type: String,
    },
    postType: {
      type: String,
    },
    image: [
      {
        type: String,
      },
    ],
    location: {
      fullAddress: {
        type: String,
      },
      address: {
        type: String,
      },
      postAddress: {
        type: String,
      },
      city: {
        type: String,
      },
      state: {
        type: String,
      },
      country: {
        type: String,
      },
      postcode: {
        type: String,
      },
      longitude: {
        type: Number,
      },
      latitude: {
        type: Number,
      },
    },
    video: [
      {
        type: String,
      },
    ],
    mediaFiles: [{ type: String }],
    tags: {
      type: Array,
    },
    difficulty: {
      type: String,
    },
    comments: {
      type: mongoose.Schema.ObjectId,
      ref: "comment",
    },
    likes: { type: mongoose.Schema.ObjectId, ref: "likes" },
    ingredient: [
      {
        fdcId: String,
        label: String,
      },
    ],
    ingredients: [
      {
        id: {
          type: mongoose.Schema.ObjectId,
          ref: "ingredients",
        },
        quantity: { type: String },
        unit: { type: String },
      },
    ],
  },

  {
    timestamps: true,
  }
);
const Post = mongoose.model("post", postSchema);
const validatePost = (post) => {
  const schema = {
    userId: Joi.objectId().required(),
    description: Joi.any(),
    imageFile: Joi.any(),
    name: Joi.any(),
    location: Joi.any(),
    difficulty: Joi.string(),
    postType: Joi.string(),
    ingredient: Joi.any(),
    tags: Joi.any(),
  };
  return Joi.validate(post, schema);
};

module.exports.Post = Post;
module.exports.validatePost = validatePost;
Bloody Bear