Использование React, NodeJS и Postgres: возникли проблемы с возможностью удаления без получения 404 - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь создать простое приложение CRUD, которое публикует список вещей в базе данных Postgres. У меня проблемы с возможностью удаления из приложения, так как я получаю 404 ошибки. Я думаю, что я делаю что-то не так на бэкэнде, так как я даже не могу удалить с почтальоном.

удаление. js // удаление маршрутизатора

router.delete('/',(req,res)=>{
    var item = req.params.index;
    console.log(`req.params.index is ${req.params.index}`)


    let deletion = `DELETE FROM tnotesapi1.tearecords
       WHERE primary_key = ${item}`


    client.query(deletion, (res,err)=>{
        if(err){
            console.error(`Record Query error, ${err.stack}`)

        }else{
            console.log('Item has been deleted from dB')
            res.send()
        }
    })


})

обработчик маршрутизатора для сервера

app.delete('/api/delete/:index',deleteRouter)

Кроме того, как использовать топор ios на интерфейсе?

tearecord.delete(`delete/`,{params:index})
        .then(res => {
            console.log();
        })

Ответы [ 2 ]

1 голос
/ 27 января 2020

? Единственная причина, по которой вы получаете 404 ERROR, заключается в том, что ваш маршрут не найден.

Почему ваш маршрут не найден? Это потому, что в вашем обработчике : server.js или app.js, вы установили метод delete следующим образом:

app.delete('/api/delete/:index',deleteRouter)

? Вы не должны этого делать, потому что вы когда-либо устанавливали метод delete в deletion.js. Итак, вам нужно всего лишь сделать что-то вроде этого:

app.use('/api/delete/:index',deleteRouter)

Код выше ? только для примера . Если это вас смущает, вы можете увидеть полный код ниже.

?‍? Вы можете сделать это, как этот код ниже ?:

удаление. js

router.delete('/:index',(req,res)=>{
    var item = req.params.index;
    console.log(`req.params.index is ${req.params.index}`)


    let deletion = `DELETE FROM tnotesapi1.tearecords
       WHERE primary_key = ${item}`


    client.query(deletion, (res,err)=>{
        if(err){
            console.error(`Record Query error, ${err.stack}`)

        }else{
            console.log('Item has been deleted from dB')
            res.send()
        }
    })
})

? В приведенном выше коде ? необходимо добавить params. Поскольку вы используете index, вам нужно добавить index как params.

сервер / приложение. js

app.use('/api/delete', deleteRouter)

? Теперь, в вашем обработчике server или app, у вас нет для использования delete снова. Поскольку вы используете его в своем deletion.js.

Интерфейс: с использованием axios

// change with your endpoint
const endPoint = 'http://localhost:3000/api/delete/' + index;
axios.delete(endpoint)
  .then(response => {
      console.log(response.data);
  }).catch(ex => {
    console.log(ex.data);
  })

? Обновлено: Использование Fetch.

Если вы используете React , тогда вы можете использовать fetch там, без использования axios.

Вы можете использовать пример кода ниже:

async handleDelete(index) {
  try {
    // change the endpoint with yours
    const endpoint =  'http://localhost:3000/api/delete/' + index;
    const result = await fetch( endpoint, { method: 'DELETE' });
    const json = await result.json();
    console.log(json);
    // do some stuff here: set state or some stuff you want
  } catch(ex) {
    console.log(ex);
  }
}

? Приведенный выше код ? пример , как отправить delete запрос на ваш бэкэнд, используя fetch в реакции.

Надеюсь, это поможет вам ?.

0 голосов
/ 27 января 2020

в вашем ax ios индекс прохода запроса непосредственно как параметр с вызовом API

tearecord.delete(`/api/delete/${index}`)  // pass your index directly 
  .then(res => {
            console.log();
        })

Backend:

router.delete('/api/delete/:index',(req,res)=>{ // put here index as params in backend 
    var item = req.params.index;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...