首页 > 解决方案 > 如何将变量从我的帖子传递给我的 get?

问题描述

我正在使用反应/表达。

我有一个简单的网页,它接受用户输入并使用axios.post. 在我的后端,我需要访问 my 中的这个用户变量get,这样我就可以过滤要发送回用户的内容。

我无法让返回函数工作,我不想使用全局变量,因为它之前已经导致错误。

有什么我想念的吗?如何从我的get请求中访问我的请求中的变量post

前端.js

import React from 'react';
import { useState, useEffect } from "react";
import Calendar from 'react-calendar';
//import 'react-calendar/dist/Calendar.css';
import Axios from 'axios'; 

const CalendarApp = () => {
  var [selectedDate, newDate] = useState(new Date());
  const [event, newEvent] = useState("")
  const [userEvent, setUserEvent] = useState("")
  const [userEventList, setUserEventList] = useState([])
  const [newUserEvent, setNewUserEvent] = useState("")

//Add event to DB
  const addUserEvent = () => {
    var userDate = (selectedDate + "").slice(3, 16);
    console.log("From addUserEvent", userDate)
    if (userEvent === "") {
      //alert("Please enter event")
    }
    else {
      Axios.post("http://localhost:3001/send", {
        userEvent: userEvent, userDate: userDate
      }).then(() => {
        //setUserEventList([...userEventList, { userEvent: userEvent, userDate: userDate}])
      });
      // changes the event list depending on what date the user clicks 
      document.getElementById('ui').value = '';
      setUserEvent(userEvent => userEvent = "")
    }
  };

  const getUserEvent = (userDate) => {
    Axios.get("http://localhost:3001/getData").then((response) => {
      setUserEventList(response.data)
      console.log("response.data: ", response.data)
    });
  };
}

后端.js

//Setting up express, similar to flask
const express = require('express'); 
const app = express() 
const mysql = require('mysql'); 
const cors = require('cors')  

//Setting up SQL, hide password properly 
const db = mysql.createConnection({
    host:'localhost',
    user: 'root',
    password: '******',
    database: 'calendardb',
});

app.use(cors());
app.use(express.json()); 

// insert information in to DB
app.post('/send',(req,res) =>{
    const userEvent = req.body.userEvent
    const userDate = req.body.userDate //<---- Access this variable from the get below
    currentDate = req.body.userDate
    console.log("FROM DB ADD",userDate,"d",currentDate)
    db.query('INSERT INTO calevent (userEvent, userDate) VALUES (?,?)', 
    [userEvent,userDate], (err,result) =>{
        if(err){
            console.log(err)
        } else{
            res.send("Data send to DB")
        }
    }
    );
  });

//Getting Specific  data from DB
app.get("/getData",(req, res) =>{
    db.query("SELECT * FROM calevent WHERE userDate = ?", [userDate], (err, result) => {
        if(err){
            console.log(err)
        }else{
            res.send(result)
        }
        console.log(result)
    });
});

标签: javascriptnode.jsreactjsaxios

解决方案


REST 调用是无状态的,这意味着每个请求都必须独立于状态。如果您的目标是 RESTful 服务,我建议您不要这样做。虽然,将它保存在会话(express-session)或类似的东西中可以工作,但我建议你userDate在 get 调用中添加参数以及参数(因为 GET 请求不会有正文)。您已经向函数发送了一个未使用userDate的参数getUserEvent,类似于此。

Axios.get("http://localhost:3001/getData", { params: { userDate }} )

推荐阅读