Yo uso vue3, vuex, express.js y mysql. En el siguiente método de obtención del enrutador, llamo a "console.log(req.body)" y muestra "[object Object]", y llamo a "console.log(req.body.userid)" y muestra "undefined".
router.get('/',async function(req,res){ const userId = req.body.userid; console.log("req body is: "+req.body); console.log("req.body.userid is: "+req.body.userid); ..... }En el siguiente método, paso el valor de ID de usuario como un objeto json. Llamo a "console.log("post userid: "+userinfo.userid);" y muestra el valor correcto "1";
async getsp(){ var userinfo = JSON.parse(localStorage.getItem('user')); console.log("post userid: "+userinfo.userid); var userid = userinfo.userid; var obj = {userid}; return await axios.get('//localhost:8081/getSp',obj) .then(...) },Y en el archivo del enrutador principal que usé body-parser, el contexto del archivo está a continuación:
require("dotenv").config(); const express = require('express'); const bodyParser = require('body-parser'); var cors = require('cors'); const signup = require('./userSignUp'); const login = require('./userLogin'); const createEvsp = require('./createEvsp'); const getSp = require('./getSp'); //const createFile = require('./createFile'); const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()) app.use(cors()) app.use(express.json()); app.use( express.urlencoded({ extended: true }) ); app.use("/signup",signup); app.use("/dologin",login); app.use("/createEvsp",createEvsp); app.use("/getSp",getSp); //app.use("/createFile",createFile); app.listen(8081,function () { console.log('Server running at 8081 port'); });El problema fue la comprensión del método HTTP y cómo funciona express
Para solucionarlo era necesario utilizar el middleware express /:userid para acceder al parámetro mediante req.params.userid
De acuerdo con los estándares http para enviar los datos, generalmente usamos la solicitud POST. Hay una buena respuesta en la pila aquí Información sobre Obtener solicitud HTTP
Sayf Eddine