Actualmente estoy trabajando con nodeJS, expressJS y reactJS. Actualmente puedo acceder a la identificación de cada dato haciendo clic en el botón editar, pero tengo problemas para actualizar los datos cada vez que hago clic en el botón y obtengo un error 404 en la consola. He revisado varias preguntas y tutoriales, pero ninguno realmente ayudó con mi confusión. Tengo una ruta de colocación en mi server.js para actualizar el registro en función de la identificación:

app.put("update-list/:id", function (req, res, next) {
    Information.update({
        Name: req.body.name,
        Phone: req.body.phone,
        Email: req.body.email,
    }, { where: req.params.id }
    ).then(function (rowsUpdated) {
        res.json(rowsUpdated);
    }).catch(next)
});

Ruta definida en reaccionar:

<Route path="/edit/:id" component={Edit}/>

Cómo obtengo la api:

 let [state, setState] = useState({
    name: "",
    phone: "",
    email: "",
  });
  let body = state;
  useEffect(()=>{
    handleSubmit(props);
  })
  function handleSubmit(props) {
    const id=props.match.id
    axios({
      method: "put",
      url: "http://localhost:5000/update-list/"+id,
      data: body,
    })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });

    console.log(state);
  }

En función de cambio:

function handleChange(e, field) {
    e.preventDefault();
    const value = e.target.value;
    setState({
        ...state,
        [field]: e.target.value,
    });
}

El clic del botón está llamando a la función handleChange() y el formulario está llamando a handleSubmit(). ¿Me estoy perdiendo algo o esta es la forma completamente incorrecta de hacerlo? ¡Avísame si necesitas más detalles!

0
llamingo 19 feb. 2021 a las 05:36

1 respuesta

La mejor respuesta
app.put("/update-list/:id", function (req, res, next) {
  db.Information.update({
    Name: req.body.name,
    Phone: req.body.phone,
    Email: req.body.email,
  }, { where: { id: req.params.id } } // This is fixed
  ).then(function (rowsUpdated) {
    res.json(rowsUpdated);
  }).catch(next)
});

Proyecto React.js: https://github.com /nkhs/node-sequelize-react.js-client/tree/stack-66271022

Proyecto API: https://github.com/nkhs/node-sequelize/tree / stack-66271022

1
Wang Liang 5 mar. 2021 a las 18:39