提问者:小点点

猫鼬错误。ValidatorError:路径`product'是必需的


你能帮帮我吗。我正在学习这个教程:“管理订单与Mongoose创建一个REST API与node.js”https://www.youtube.com/watch?v=vkuy8qsczwy&list=pl55riy5tl51q4d-b63kbnygu6opnpfk_q&index=8它已经很老了(2017年),但我认为仍然不错。但是我被卡住了(大约8分钟)。以与教程中相同的方式进行POST请求会导致我出错。我看过以前类似这样的话题,视频下面的评论,但是我没有找到答案。下面是代码:

订货方案

const mongoose = require('mongoose');

const orderSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  product: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Product',
    required: true,
  },
  quantity: { type: Number, default: 1 },
});

module.exports = mongoose.model('Order', orderSchema);

产品方案

const mongoose = require('mongoose');

const productSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  name: { type: String, required: true },
  price: { type: Number, required: true },
});

module.exports = mongoose.model('Product', productSchema);

过帐订单工艺路线

const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');

const Order = require('../models/order');

router.post('/', (req, res, next) => {
  const order = new Order({
    _id: mongoose.Types.ObjectId(),
    quantity: req.body.quantity,
    product: req.body.productId,
  });
  order
    .save()
    .then((result) => {
      console.log(result);
      res.status(201).json(result);
    })
    .catch((err) => {
      console.log(err);
      res.status(500).json({
        error: err,
      });
    });
});

请求

POST http://localhost:3000/orders
Content-Type: application/json

{
    "quantity": "10",
    "poductId": "5fae9023c8e7ac3e54ae6752"    
}

我得到:

Error: Order validation failed: product: Path `product` is required.

{
  "error": {
    "errors": {
      "product": {
        "name": "ValidatorError",
        "message": "Path `product` is required.",
        "properties": {
          "message": "Path `product` is required.",
          "type": "required",
          "path": "product"
        },
        "kind": "required",
        "path": "product"
      }
    },
    "_message": "Order validation failed",
    "message": "Order validation failed: product: Path `product` is required."
  }
}

共1个答案

匿名用户

看起来您的请求JSON中有一个错误

{
    "quantity": "10",
    "poductId": "5fae9023c8e7ac3e54ae6752" ---> change this to productId (missing `r`)   
}