javascript - 如何将变量从我的帖子传递给我的 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)
});
});
解决方案
REST 调用是无状态的,这意味着每个请求都必须独立于状态。如果您的目标是 RESTful 服务,我建议您不要这样做。虽然,将它保存在会话(express-session)或类似的东西中可以工作,但我建议你userDate
在 get 调用中添加参数以及参数(因为 GET 请求不会有正文)。您已经向函数发送了一个未使用userDate
的参数getUserEvent
,类似于此。
Axios.get("http://localhost:3001/getData", { params: { userDate }} )
推荐阅读
- reactjs - 使用 React Typescript 的扩展运算符
- angular - 使用 agm-core (Angular Google Maps) 我如何在 agm-polyline 上使用箭头
- python - Python - 复制元素的属性并粘贴到另一个文本文件
- angular - ionic cordova angular html2canvas 和 pdfMake 在手机上的 pdf 文件中下载屏幕截图
- html - CSS 覆盖命令
- python - CNN训练Keras如何处理数千张图像
- java - 记忆游戏动作监听器调试
- r - 在 ggplot facet_wrap 中共享标签以避免重复
- authentication - 分离前端和后端 - 使用 Vue/Webpack/Hapi 进行持久身份验证
- powershell - 更改文本格式