Soy nuevo en el nodo js, así que traté de solicitar la publicación de json en el nodo js usando este código:
const req = await fetch( "http://localhost:3000/api/auth/signin", { method: "POST", header:{ 'Accept':'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ username:myusername, password:mypassword }) }, )Pero cuando reviso el lado del servidor, el cuerpo está vacío, ¿hay algo que me perdí?
Este es mi código del lado del servidor:
exports.signin = (req, res) => { db.findByUsername(req.body.username,(err,data) =>{ if(err){ if (err.kind === "not_found") { res.status(404).send({ message: `Not found customer with username or password.` }); } else { res.status(500).send({ message: "Error retrieving Customer with id " + req.body.username }); } } console.log(data) if(data.password_user != req.body.password){ return res.status(401).send({ accessToken: null, message: "Invalid Password!" }); } }); }; Intenté acceder con req.body.username pero está vacío.
Esta es mi ruta:
const { verifySignUp } = require("../middleware"); const controller = require("../controllers/auth.controller"); const bodyParser = require('express'); module.exports = function(app) { app.use(function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header( "Access-Control-Allow-Headers", "x-access-token, Origin, Content-Type, Accept" ); next(); }); app.use(bodyParser.json()); app.post("/api/auth/signin", controller.signin); };Este es el código de error:
TypeError: Cannot read property 'password_user' of nullEn primer lugar, la forma en que está agregando un middleware es incorrecta (para ser honesto, nunca he visto eso). Esto es lo que pretendía explicar:
module.exports = function(app) { app.use(function(req, res, next) { // CORS handler }); app.use(bodyParser.json()); app.use('/api/auth/signin', controller.signin); };También tenga en cuenta el hecho de que su importación es incorrecta:
const bodyParser = require('body-parser'); Si entiendo correctamente, desea parchear su app que es una instancia de una aplicación expresa. En ese caso, debe agregar el middleware body-parser justo antes de agregar cualquier controlador para la POST y PUT . De lo contrario, el orden de ejecución es incorrecto y el cuerpo sin procesar de la solicitud nunca se analiza y, por lo tanto, req.body no está undefined .
Editar
Si desea usar body-parser para una sola ruta, puede probar lo siguiente:
app.route('/path/to', bodyParser.json(), function(req,res,next) { });