Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
Solicitud PUT de 'Axios' al servidor (URL fallida)

Soy bastante nuevo en Node.js/Express.js/Axios/MongoDb/Mongoose , y es la primera vez que pregunto en stackoverflow , así que corríjame si cometo algún error al presentar la pregunta.

Estoy creando un sitio web para una novela, y espero que una vez que el lector termine de leer un capítulo, sus readedChapterIds (una propiedad del modelo mangosta del usuario) registre la ID del capítulo que acaba de leer.

Primero, creé la ruta get&put /:user_id en la carpeta route/user.js y controller/user.js , para que los usuarios puedan editar sus perfiles en el sitio web. Lo probé y lo verifiqué en mongoDB atlas para asegurarme de que la ruta de colocación funcionó. En segundo lugar, probé axios.get en mi showChapter.js para asegurarme de que axios CDN funcionaba. En tercer lugar, lo revisé como una solicitud de venta. Aquí viene el problema.

 const currentUser = document.querySelector('#currentUser'); const currentUserInString = currentUser.innerText; const chapterID = document.querySelector('#chapterID'); const chapterIDInString = chapterID.innerText; const readedChapterIds = { readedChapterIds: `${chapterIDInString}`} axios.put(`http://localhost:3000/${currentUserInString}`, readedChapterIds ) .then(function (response) {console.log(response);}) .catch(function (error) {console.log(error);});

y tengo

PUT http://localhost:3000/ 404 (No encontrado) Error: la solicitud falló con el código de estado 404 en e.exports (axios.min.js:1:8675) en e.exports (axios.min.js:1: 13500) en XMLHttpRequest.E (axios.min.js:1:7067)

/${currentUserInString} ${currentUserInString} 'http://localhost:3000/621832c2a7b93b0a95a1fb86' (el ID del capítulo que imprimo usando console.log). Ninguno de ellos funciona. Leí la documentación de axios y todas las preguntas relacionadas en stackoverflow, pero no encontré ninguna solución.

Mi primera pregunta: ¿cómo solucionar mi problema de URL? Mi segunda pregunta: ¿debería usar la solicitud de parche en lugar de la solicitud de colocación? Supongo que debería insertar el ID de capítulo en la matriz readedChapterIds, para que no pierda ningún registro de lectura que haya tenido antes. o Tal vez mantenga axios.put pero agregue user.readedChapterIds.push (... readedChapterIds) en los controladores/user.js ???

Gracias por adelantado. Agradezco cualquier respuesta y sigo intentando.

Editar:

Aquí está mi código del lado del servidor:

 router.put('/:user_id', catchAsync(users.updateUser)); module.exports.updateUser = async (req, res) => { const { user_id } = req.params; const user = await User.findByIdAndUpdate(user_id, { ...req.body}); await user.save(); req.flash('succes', 'Successfully updated your User Profile!') res.redirect(`/`) }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema del lado del servidor se ha resuelto con el siguiente código :

 module.exports.patchUser = async (req, res) => { // res.send('updating something') const { user_id } = req.params; const newRead = req.body.readedChapterIds; const user = await User.findById(user_id); user.readedChapterIds.push(newRead); console.log(user) await user.save(); req.flash('succes', 'New Chapter Unlocks!') // res.redirect(`/`) }

req.body no era legible debido a los encabezados predeterminados, así que defino el tipo de contenido de los encabezados. Al hacerlo, req.body es legible.

 headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

Aquí está la imagen completa del código del lado de mi navegador:

 let data = new URLSearchParams(); data.append('readedChapterIds', `${chapterIDInString}`) axios({ method: 'patch', url: `/${currentUserInString}`, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: data }) .then((response) => console.log(response)) .catch((error) => console.log(error))

Gracias a todos.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema se resuelve usando Content-Type

 let data = new URLSearchParams(); // check it more at https://www.itread01.com/content/1577199910.html data.append('readedChapterIds', `${chapterIDInString}`) axios({ method: 'patch', url: `/${currentUserInString}`, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: data }) .then((response) => console.log(response)) .catch((error) => console.log(error))
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda