我試圖從一個表中查詢,其中教師 ID 等于登錄者的教師 ID,但我無法將該教師 ID 從前端傳遞到后端。
這是后端
app.get("/api/get", async(req,res) => {
const teacherId = req.body.teacherId
connection.query(
"SELECT class FROM homework WHERE teacherID = ?",
[teacherId],
(err, result) => {
if (result){
res.send({ message: result })
} else{
console.log(err)
}
}
)
})
這是前端
useEffect(() => {
Axios.get("http://localhost:1337/api/get", {
teacherId: teacherId
}).then((response) => {
if(response){
setDisplayHomework(response.data.message)
} else{
console.log("error")
}
})
})
const teacherId = localStorage.getItem("teacherId")
我認為問題出在它所說的教師 ID:教師 ID 但我不知道為什么。
uj5u.com熱心網友回復:
你需要使用
Axios.get("http://localhost:1337/api/get", {
params: { teacherId }
});
并req.query.teacherId用來閱讀它
如果你看到Axios.get簽名是
axios.get(url[, config])
與
axios.post(url[, data[, config]])
它將資料作為第二個引數傳遞。
那是因為GET服務器不使用請求中的正文。閱讀帶有請求正文的 HTTP GET 以了解更多資訊。
uj5u.com熱心網友回復:
通常您不會發送帶有 get 請求的正文。將教師 ID 放入 url 中。那么這稱為路徑變數。
app.use('/teacher/:teacherId', function(req, res, next) {
console.log(req.params.teacherId);
next();
})
uj5u.com熱心網友回復:
與 post 請求不同,Get 請求沒有請求正文,因此 Axios.get 函式不應為正文設定第二個引數。而是將您的引數作為 url 傳遞,如下所示:
useEffect(() => {
Axios.get("http://localhost:1337/api/get?teacherId=" teacherId).then((response) => {
if(response){
setDisplayHomework(response.data.message)
} else{
console.log("error")
}
})
})
然后在您的后端代碼中使用 req.params 訪問獲取請求 url 引數:
app.get("/api/get", async(req,res) => {
const teacherId = req.params.teacherId
connection.query(
"SELECT class FROM homework WHERE teacherID = ?",
[teacherId],
(err, result) => {
if (result){
res.send({ message: result })
} else{
console.log(err)
}
}
)
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/383077.html
標籤:javascript 节点.js 反应 表达 公理
