Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

222
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!