Estoy tratando de usar Axios para realizar una publicación en una base de datos local de couchdb.
const options = { headers: { 'Content-type': 'multipart/form-data', Referer: "http://localhost:5984", Accept: "application/json" } } try{ const response = await axios.get("http://Username:Password@localhost:5984/users/" + user.Name + "/") rev = response.data._rev console.log("Fresh _rev acquired.\n\n") }catch{ console.log("An error occured") } try{ var response = await axios.post('http://Username:Password@localhost:5984/users/' + user.Name + '/?_rev="' + rev + '"', user, options) console.log("posted\n\n") }catch(error){ console.log("post failed\n", error) } Esto produce un mensaje de error. "Solicitud fallida con el código de estado 500" La línea de datos del mensaje de error es: data: { error: 'case_clause', reason: 'undefined', ref: 2200284843 } Después de investigar el problema, creo que el error se debe a que axios usa varias partes /form-data en lugar de application/json, pero cuando cambio eso, aparece un error que indica que el tipo de contenido debe ser multipart/form-data. Encontré una solución para usar el método de publicación al usar un get, luego eliminar el documento en la base de datos y finalmente usar un put para hacer un nuevo documento. Realmente me molesta que después de unos días de tratar de entender los problemas que he tenido con este método de publicación, todavía tengo las manos vacías. Si tienes algo que pueda ayudar, te lo agradecería mucho.
Se resolvió el error 500 cambiando el tipo de contenido nuevamente a application/json en el encabezado
headers: { 'Content-type': 'application/json', Referer: "http://localhost:5984", Accept: "application/json" }Para este cambio, couchdb devolvió un error 415. Después de investigar un poco más y algunas pruebas y errores, eliminé el {docid} y el número de revisión de la URL y los incluí en la parte de datos de la solicitud.
try{ var response = await axios.post('http://Username:Password@localhost:5984/twitchusers/' /*+ user.Name + '/'?_rev="' + rev + '"'*/, {_id: user.Name, _rev: rev, user}, options) console.log("posted\n\n") }catch(error){ console.log("post failed\n", error) }Este cambio no produjo ningún error.