Как исправить метод get с ошибкой axios undefined error из 'this.props.match.params.id' - PullRequest
0 голосов
/ 22 апреля 2019

Я разрабатываю как веб-интерфейс, так и веб-приложение.Для этого я использовал технологии Mongo, Express, реагировать и ноды.Я разрабатываю API для get, post, put и проверяю его с помощью postmon.Оно работает !Но когда я подключаю его к интерфейсу, мой метод get не работает.Этот метод get означает получение определенного объекта.

Это мой метод получения API,

// get a book by id
book_route.route('/:id').get(function (req, res) {
    let id = req.params.id;
    Book.findById(id, function (err, book){
        if(err){
            console.log(err);
        }
        else {
            res.json(book);
        }
    });
});

Обратите внимание, что это работает через postmon, например, этот один полученный объект имеет свой идентификатор.

http://localhost:4000/book/5cbcc159e4db244de040e854

Полученследующий объект JSON.

{
    "_id": "5cbcc159e4db244de040e854",
    "title": "Miracles from heaven",
    "isbn_no": "439564969",
    "author": "Jense Bend",
    "published_year": 2015,
    "no_of_copies": 34,
    "public_or_rare": "",
    "__v": 0
}

Я хочу загрузить значения объекта выше JSON в мои элементы формы.Поэтому я попробовал это на веб-интерфейсе, как показано ниже,

  componentDidMount() {

        axios.get('http://localhost:4000/book/'+this.props.match.params.id)
        //axios.get('http://localhost:4000/book/5cbcc159e4db244de040e854')
            .then(response => {
               // console.log(this.props.match.params.id);
                this.setState({
                    title: response.data.title,
                    isbn_no: response.data.isbn_no,
                    author: response.data.author,
                    published_year: response.data.published_year,
                    no_of_copies: response.data.no_of_copies,
                    public_or_rare: response.data.public_or_rare
                 });
            })
            .catch(function (error) {
                console.log(error);
            })
    }

Примечание. Чтобы проверить это, я комментирую первую строку и не комментирую axios.get('http://localhost:4000/book/5cbcc159e4db244de040e854') эту строку.Он показывает элементы формы со значениями.

Однако эта строка не работает, axios.get('http://localhost:4000/book/'+this.props.match.params.id)

Наконец, я хочу загрузить значения в мою форму.Я закодировал другие функции onchange в интерфейсе.Обратите внимание, что они были правильно отображены, когда я включил эту строку axios.get('http://localhost:4000/book/5cbcc159e4db244de040e854')

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

...