Voy a simplificar esta pregunta aquí lo mejor que pueda:
Primero en el lado del cliente:
let textToSend = "Shouldn't it work"; console.log(textToSend) // Logs: Shouldn't it work (with apostrophe) let response = await fetch("http://localhost:4000/somewhere",{ method:"POST", headers:{ "message" : textToSend } })Luego en el servidor:
exports.function = function(req,res){ let messageText = req.get("message"); console.log(messageText); //Logs: Shouldn }Entonces, mi problema es que la cadena se corta a "Shouldn" ya que hay un apóstrofo después de la n. Intenté agregar una barra invertida antes del apóstrofe, pero sigue igual 🤔 ¿Alguna idea? También probé una doble barra invertida.
Además, en el servidor PostgreSQL al que está conectado, el tipo de datos es varchar.
Investigando un poco más sobre la codificación de URI, descubrí que la decodificación no funciona en el nodo por alguna razón 🤔. Sin embargo, al obtener los resultados, el texto codificado se puede decodificar en el lado del cliente cuando sea necesario, por ejemplo:
Lado del cliente:
let textToSend = encodeURI("Shouldn't it work"); console.log(textToSend); //Logs: Shouldn%E2%80%99t%20it%20work let response = await fetch("http://localhost:4000/somewhere",{ method:"POST", headers:{ //lets send this message to the server "message" : textToSend } })Lado del servidor:
let message = req.get("message"); console.log(decodeURI(message)); //Logs: Shouldn%E2%80%99t%20it%20work //Notice how decoding doesn't work here for some reasonDe vuelta en el lado del cliente:
let response = await fetch("http://localhost:4000/getMessages",{ method:"GET", }) if(response.ok){ try{ let json = await response.json(); console.log(decodeURI(json)); //Logs: Shouldn't it work }catch(e){ console.log(e) } }En resumen, codificarlo al enviarlo, decodificarlo al recibirlo, no decodificarlo en el lado del servidor.