如何将来自邮递员的对象作为数字推送(ValidationError)? [英] How to push an object coming from postman as a number(validationError)?

查看:15
本文介绍了如何将来自邮递员的对象作为数字推送(ValidationError)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的主要问题是无法将数量推送到其各自的对象。我以JSON格式在邮递员中发布数据,如下所示:

  "productId":"621256596fc0c0ef66bc99ca",
  "quantity":10

我的架构是:

userOrders:[
            {
                productId:{
                    type: String,
                    required: [true, "ProductId is required"]
                },

                quantity:{
                    type: Number,
                    required: [true, "Quantity is required"]
                }
            }
        ]

我的控制器是:

module.exports.createOrder =  async (data) => {

    let id = data.userId;
    let product = data.productId;
    let oQuantity = data.quantity;
    return  User.findById(id).then(user =>{

            
            user.userOrders.push({productId:product})
            user.userOrders.push({quantity:oQuantity})  
            return user.save().then((savedOrder, err) => {
              if (savedOrder) {
                  return savedOrder;
            } else {
                 return 'Failed to create order. Please try again';
            }
         }) 
      });

我收到如下错误:

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

ValidationError: User validation failed: userOrders.0.quantity: Quantity is required

我试了那么多东西,但还是解决不了。有什么建议吗?

推荐答案

不是将两个单独的对象推入userOrders数组,而是推入一个同时具有两个属性的对象。

module.exports.createOrder =  async (data) => {

    let id = data.userId;
    let product = data.productId;
    let oQuantity = data.quantity;
    User.findById(id).then(user =>{
            const data = {
              productId: product,
              quantity: oQuantity
            }
            
            user.userOrders.push(data)
            user.save().then((savedOrder, err) => {
              if (savedOrder) {
                  return savedOrder;
            } else {
                 return 'Failed to create order. Please try again';
            }
         }) 
      });

由于该错误是需要Quantity属性的验证错误,因此当您将这两个属性作为单独的对象推送时,它可能无法通过验证,因为您将在userOrders数组中有两个单独的对象,每个对象仅具有ProductID或Quantity

这篇关于如何将来自邮递员的对象作为数字推送(ValidationError)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆