Не удается найти ошибку проверки mongoose в объекте express error

#express #mongoose #axios

#экспресс #mongoose #axios

Вопрос:

Я использую mongoose js и пытаюсь вставить новый документ в mongodb. Я передаю объект данных в express с использованием Axios. Когда я получаю ошибку проверки, сервер express очень легко идентифицирует проблему. Он возвращает ошибку productCode: ValidatorError: Path 'productCode' is required.

Ошибка, которая возвращается в express, является огромным объектом, и я не могу найти в нем ошибку проверки. Может кто-нибудь сказать мне, чего мне не хватает в моей ошибке catch?

ОБНОВЛЕНО

Путь: Express axios Post catch error

 const product = {
  productCode: '1a',
  productName: 'product x'
};

async function createProduct(product) {
  axios
    .post(
      `http://localhost:3000/myroute`,
      product
    )
    .then((res) => {
      console.log('res', res.data.productCode);
      return res.data.productCode;
    })
    .catch((error) => {
      // console.log('err', err.response);

      if (error.response) {
        /*
         * The request was made and the server responded with a
         * status code that falls out of the range of 2xx
         */
        console.log(error.response.data);
        console.log(error.response.status);
        console.log(error.response.headers);
      } else if (error.request) {
        /*
         * The request was made but no response was received, `error.request`
         * is an instance of XMLHttpRequest in the browser and an instance
         * of http.ClientRequest in Node.js
         */
        console.log(error.request);
      } else {
        // Something happened in setting up the request and triggered an Error
        console.log('Error', error.message);
      }
      // console.log(error);
    });
}
  

Обновить

Путь: Server

 const product = new Product(req.body);

product
  .save()
  .then((result) => {
    res.status(200).json(result);
  })
  .catch((err) => {
    console.log('err', err);
    res.status(500).json({ error: err.reason });
  });
  

Путь: Model

 var productSchema = new Schema(
  {
    productCode: {
      type: String,
      required: true
    },
    productName: { type: String, default: '' }
  },
  { collection: 'products', timestamps: true, versionKey: false }
);
  

Комментарии:

1. Можете ли вы включить в свой вопрос все обещание axios, включая объект тела запроса, который вы отправляете на сервер

2. @rantao обновлено. Это то, что вы хотели

3. Хм, похоже, вы правильно передаете свой объект запроса; Вам нужно будет взглянуть на свой контроллер или где бы вы ни сохраняли тело запроса в БД и убедиться, что модель получает productCode свойство, поскольку оно помечает, что оно требуется, и не получает его. Если вы снова обновите свой вопрос, чтобы указать, где вы выполняете операцию сохранения, я тоже могу взглянуть

4. Кстати, корень вашей проблемы не в блоке .catch, он поступает из любого места, где вы обрабатываете данные в своем API. catch Просто возвращает ошибку

5. @rantao обновлен снова. Мысли?