0

**I'm trying to save a new document in mongodb with mongoose, but I am getting ValidationError: Path 'email' is required., Path 'passwordHash' is required., Path 'username' is required. even though I am supplying email, passwordHash and username.

Here is the user schema.**

*productModel.js*

const mongoose = require("mongoose");
const Validator = require("Validator");


const productSchema = new mongoose.Schema({
  name: {
    type: String,
    required:[true,"Please Enter Your Name"],
    trim: true
  },
  description: {
    type: String,
    required: [true,"Please Enter Product Description"],
  },
  price: {
    type: Number,
    required: [true,"Please Enter Product Price"],
    maxLength: [8, "Price cannot exceed 8 characters"],
  },
  ratings: {
    type: Number,
    default: 0,
  },
  images: [
    {
      public_id: {
        type: String,
        required: true,
      },
      url: {
        type: String,
        required: true,
      },
    },
  ],
  category: {
    type: String,
    required: [true,"Please Enter Product Category"],
  },
  Stock: {
    type: Number,
    required: [true, "Please Enter product Stock"],
    maxLength: [4, "Stock cannot exceed 4 characters"],
    default: 1,
  },
  numOfReviews: {
    type: Number,
    default: 0,
  },
  reviews: [
    {
      user: {
        type: mongoose.Schema.ObjectId,
        ref: "User",
        required: true,
      },
      name: {
        type: String,
        required: true,
      },
      rating: {
        type: Number,
        required: true,
      },
      comment: {
        type: String,
        required: true,
      },
    },
  ],

  
  createdAt: {
    type: Date,
    default: Date.now,
  },
});

**productRoute.js**

const express=require("express");
const { getAllProducts,createProduct } = require("../controllers/productController");

const router=express.Router();


router.route("/products").get(getAllProducts);

router.route("/product/new").post(createProduct);


module.exports=router

**server.js**

const app = require("./app");

const dotenv = require("dotenv");
const connectDatabase=require("./config/database");

//config
dotenv.config({path:"backend/config/config.env"});

//connecting to database
connectDatabase();

app.listen(process.env.PORT,()=>{
    console.log('server is working on https://localhost:${process.env.PORT}')
});

**productController.js**

const Product=require("../models/productModel");




//Create Product
exports.createProduct=async(req,res,next)=>{
     const product= await Product.create(req.body);

     res.status(201).json({
        success:true,
        product,
     });
}

exports.getAllProducts = (req,res)=>{


    res.status(200).json({message:"Route is working fine"})
}

**database.js**

const mongoose=require("mongoose");

const  connectDatabase =()=>{
    mongoose.connect(process.env.DB_URI,{useNewUrlParser:true,useUnifiedTopology:true,
    /*useCreateIndex:true*/}).then((data)=>{
            console.log(`Mongodb connected with server:${data.connection.host}`);
        
        }).catch((err)=>{
            console.log(err);
        })
}
module.exports =connectDatabase;

**Error**

this.$__.validationError = new ValidationError(this); ^

ValidationError: Product validation failed: category: Please Enter Product Category, price: Please Enter Product Price, description: Please Enter Product Description, name: Please Enter Your Name at model.Document.invalidate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:3097:32) at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:2885:17 at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1349:9 at processTicksAndRejections (node:internal/process/task_queues:78:11) { errors: { category: ValidatorError: Please Enter Product Category at validate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1346:13) at SchemaString.SchemaType.doValidate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1330:7) at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:2877:18 at processTicksAndRejections (node:internal/process/task_queues:78:11) { properties: { validator: [Function (anonymous)], message: 'Please Enter Product Category', type: 'required', path: 'category', value: undefined }, kind: 'required', path: 'category', value: undefined, reason: undefined, [Symbol(mongoose:validatorError)]: true }, price: ValidatorError: Please Enter Product Price at validate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1346:13) at SchemaNumber.SchemaType.doValidate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1330:7) at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:2877:18 at processTicksAndRejections (node:internal/process/task_queues:78:11) { properties: { validator: [Function (anonymous)], message: 'Please Enter Product Price', type: 'required', path: 'price', value: undefined }, kind: 'required', path: 'price', value: undefined, reason: undefined, [Symbol(mongoose:validatorError)]: true }, description: ValidatorError: Please Enter Product Description at validate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1346:13) at SchemaString.SchemaType.doValidate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1330:7) at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:2877:18 at processTicksAndRejections (node:internal/process/task_queues:78:11) { properties: { validator: [Function (anonymous)], message: 'Please Enter Product Description', type: 'required', path: 'description', value: undefined }, kind: 'required', path: 'description', value: undefined, reason: undefined, [Symbol(mongoose:validatorError)]: true }, name: ValidatorError: Please Enter Your Name at validate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1346:13) at SchemaString.SchemaType.doValidate (C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\schematype.js:1330:7) at C:\Users\HP\OneDrive\Desktop\E Commerce\node_modules\mongoose\lib\document.js:2877:18 at processTicksAndRejections (node:internal/process/task_queues:78:11) { properties: { validator: [Function (anonymous)], message: 'Please Enter Your Name', type: 'required', path: 'name', value: undefined }, kind: 'required', path: 'name', value: undefined, reason: undefined, [Symbol(mongoose:validatorError)]: true } }, _message: 'Product validation failed' }

0 Answers0