Estoy creando una aplicación usando nodejs, react, postgresql.
servidor.js
const express = require("express"); const app = express(); const cors = require("cors"); const pool = require("./db"); //middleware app.use(cors()); app.use(express.json()); app.post("/todos",async (req,res)=>{ try { const {description} = req.body; const newStudent = await pool.query( "INSERT INTO todo (description) VALUES($1) RETURNING *", [description] ); res.json(newStudent.rows[0]); } catch (err) { console.error(err.message); } })en reactcomponent.js
try { const body = values.firstName; const response = await fetch("http://localhost:5000/todos",{ method: "POST", headers: {"Content-Type" : "application/json"}, body: JSON.stringify(body) }); console.log(response); } catch (error) { console.error(error.message); }aquí value.firstName es algo que se toma de la entrada del formulario. y crear comando sql de tabla de base de datos -
CREATE TABLE todo( todo_id SERIAL PRIMARY KEY, description VARCHAR(255) );cuando reviso la consola me sale esto -
Response { type: "cors", url: "http://localhost:5000/todos", redirected: false, status: 400, ok: false, statusText: "Bad Request", headers: Headers, body: ReadableStream, bodyUsed: false }usando cartero, puedo interactuar con mi base de datos de postgres y ejecutar la solicitud correctamente. Necesito ayuda porque no funciona en el lado del cliente. ¿Como puedo resolver esto?
¿Podría ser que tal vez desde el lado del servidor lo esté recuperando como texto sin formato? si es así, cámbielo de application/json a text/plain , espero que esto ayude.
(Estoy editando aquí ya que en el comentario el código no será visible)
Encontré un código similar al tuyo para agregar. Creo que la solicitud es incorrecta aquí.
app.post('/users', (req, res)=> { const user = req.body; let insertQuery = `insert into users(id, firstname, lastname, location) values(${user.id}, '${user.firstname}', '${user.lastname}', '${user.location}')` client.query(insertQuery, (err, result)=>{ if(!err){ res.send('Insertion was successful') } else{ console.log(err.message) } }) client.end; })