Reputation: 79
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 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
may you guys show me the right way to solve this problem
Upvotes: 6
Views: 8471
Reputation: 3717
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()
]
Upvotes: 15
Reputation: 2398
Use Wildcard * for nested Objects Read Here
[
check('name', " ").not().isEmpty()
check('productDetails.commdityID', " ").not().isEmpty()
check('productDetails.totalAmount', " ").not().isEmpty()
]
Upvotes: 4