Не могу обновить массивы с поставленной конечной точки - PullRequest
0 голосов
/ 21 ноября 2018

Это один простой API с использованием Express, где результаты хранятся в массиве курса.Логика проверки сохраняется в функции validateCourse.

Теперь проблема в том, что конечная точка POST работает правильно, но пока я пытаюсь выполнить обновление через конечную точку PUT, получаю 404 ошибка:

name is required.

Может кто-нибудь сказать мне, где проблема в логике или конечной точке PUT, таким образом, опция обновления не работает.

const Joi = require('joi');
const express = require('express');
const app = express();

app.use(express.json());

const courses = [
    { id: 1, name: 'course1' },
    { id: 2, name: 'course2' },
    { id: 3, name: 'course3' }
]
app.post('/api/courses', (req, res) => {

    const result = validateCourse(req.body);

    // console.log(result);

    if (result.error) {
        res.status(400).send(result.error.details[0].message);
        return;
    }

    const course = {
        id: courses.length + 1,
        name: req.body.name
    };
    courses.push(course);
    res.send(course);
});

app.put('/api/courses/:id', (req, res) => {

    //Search course by get method
    //If not found return error 404

    const course = courses.find(c => c.id === parseInt(req.params.id));
    if (!course) res.status(404).send('not found with the given id');

    //validate
    //if invalid ,return 400 bad request

    const result = validateCourse(req.body);
    // const {error} = validateCourse(req.body);

    if (result) {
        res.status(400).send(result.error.details[0].message);
        console.log(result.error.details);
        return;
    }


    //if valid then update course
    //Return the updated course to client
    course.name = req.body.name;
    res.send(course);
});


//INPUT VALIDATION//

function validateCourse(course) {
    const schema = {
        name: Joi.string().min(3).required()
    };
    return Joi.validate(course, schema);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...