#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 обновлен снова. Мысли?