6

I created a model as follow: the model for buying, this used mongoose

in the model "name", "commodityID", "totalAmount" are required, but notice commodity ID and totalAmount is part of an inner object "productDetails", and now I am using express-validator to do server-side validation as like this this is the api through which the application can interact

this validation works for "name" fields which make sense but it doesn't work for the "totalAmount" and "commodityID" which are fields of an inner object, and it is the pics I took throw postman this is a request and response made by postman

may you guys show me the right way to solve this problem

2 Answers 2

15

for array i.e

productDetails: [
  {
    commodityID: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: "commodity",
    },
    perOnePrice: { type: String, required: true },
    totalAmount: { type: Number, required: true },
    
  },
],

use

[
 body('productDetails.*.commodityID').not().isEmpty()
 body('productDetails.*.perOnePrice').not().isEmpty()
 body('productDetails.*.totalAmount').not().isEmpty()
]

For nested object, lets suppose:

productDetails: {
    commodityID: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: "commodity",
    },
    perOnePrice: { type: String, required: true },
    totalAmount: { type: Number, required: true },      
  },

use

[
 body('productDetails.commodityID').not().isEmpty()
 body('productDetails.perOnePrice').not().isEmpty()
 body('productDetails.totalAmount').not().isEmpty()
]
Sign up to request clarification or add additional context in comments.

Comments

4

Use Wildcard * for nested Objects Read Here

   [
        check('name', " ").not().isEmpty()
        check('productDetails.commdityID', " ").not().isEmpty()
        check('productDetails.totalAmount', " ").not().isEmpty()
    ]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.