如何将来自邮递员的对象作为数字推送(validationError)?

2024-01-09

我的主要问题是我无法将数量推送到其各自的对象。我在邮递员中以 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每个数组仅包含产品 ID 或数量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将来自邮递员的对象作为数字推送(validationError)? 的相关文章