如何使用express-validator对嵌套对象实现验证

Sam*_*ial 6 javascript arrays node.js express express-validator

我创建了一个模型如下: 购买的型号,这个用的是mongoose

在模型中,“name”、“commodityID”、“totalAmount”是必需的,但请注意商品ID和totalAmount是内部对象“productDetails”的一部分,现在我使用express-validator进行服务器端验证,如下所示 这是应用程序可以交互的 API

此验证适用于有意义的“name”字段,但不适用于内部对象的字段“totalAmount”和“commodityID”,这是我扔邮递员拍摄的照片 这是邮递员提出的请求和回复

你们可以告诉我解决这个问题的正确方法吗

kob*_*003 15

对于数组

productDetails: [
  {
    commodityID: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: "commodity",
    },
    perOnePrice: { type: String, required: true },
    totalAmount: { type: Number, required: true },
    
  },
],
Run Code Online (Sandbox Code Playgroud)

使用

[
 body('productDetails.*.commodityID').not().isEmpty()
 body('productDetails.*.perOnePrice').not().isEmpty()
 body('productDetails.*.totalAmount').not().isEmpty()
]
Run Code Online (Sandbox Code Playgroud)

对于嵌套对象,让我们假设:

productDetails: {
    commodityID: {
      type: mongoose.Schema.Types.ObjectId,
      required: true,
      ref: "commodity",
    },
    perOnePrice: { type: String, required: true },
    totalAmount: { type: Number, required: true },      
  },
Run Code Online (Sandbox Code Playgroud)

使用

[
 body('productDetails.commodityID').not().isEmpty()
 body('productDetails.perOnePrice').not().isEmpty()
 body('productDetails.totalAmount').not().isEmpty()
]
Run Code Online (Sandbox Code Playgroud)


Man*_*kur 4

对嵌套对象使用通配符 *阅读此处

   [
        check('name', " ").not().isEmpty()
        check('productDetails.commdityID', " ").not().isEmpty()
        check('productDetails.totalAmount', " ").not().isEmpty()
    ]
Run Code Online (Sandbox Code Playgroud)