所以我有 1 個請求
app.get('/assignment/loans', (req, res) => {
const id = req.query.bookID;
}
另一個是這樣的:
app.get('/assignment/loans', (req, res) => {
const id = req.query.studentID;
}
由于某種原因,studentID 一個不起作用,它總是去 bookID 搜索。我用這個
http://localhost:3000/assignment/loans?bookID=1
它按預期作業,但如果我使用
http://localhost:3000/assignment/loans?studentID=9653
我得到:

這是一個只應出現在 bookID 的錯誤。我怎樣才能區分這兩者?先感謝您。
有關這兩個請求的更多代碼:https ://pastebin.com/1A0jK3BX
uj5u.com熱心網友回復:
您不能有 2 條具有相同 url 的路由。第一個優先。你需要像這樣處理它。
app.get('/assignment/loans', (req, res) => {
const bookID = req.query.bookID;
const studentID = req.query.studentID;
if(bookID){
}
if(studentID){
}
}
uj5u.com熱心網友回復:
實際上 express 框架將在請求發生時執行第一個端點,即
app.get('/assignment/loans', (req, res) => { const id = req.query.bookID;})
在重復端點的情況下,因此您應該使用一條路線并放置兩個查詢而不是一個,因此代碼將如下所示
app.get('/assignment/loans', (req, res) => {
const book_id = req.query.bookID;
const student_id = req.query.studentID
})
您還必須在資料庫中執行之前對查詢進行驗證
uj5u.com熱心網友回復:
你有完全相同的路線
app.get('/assignment/loans', ...)它必須是一條路線。
嘗試像下面這樣組合它們
app.get('/assignment/loans', (req, res) => {
const bookId = req.query.bookID;
const studentId = req.query.studentID;
const loans = [];
if(bookId){
if(!Number.isInteger(parseInt(studentId))){
return res.status(422)
.setHeader('content-type', 'application/json')
.send({error: 'bookId not numeric'});
}
db.all('SELECT * FROM loan WHERE bookID=?', bookId, (err, rows) => {
if (err) {
res.status(422)
.setHeader('content-type', 'application/json')
.send({error: 'Problem while querying database'});
return;
}
if (rows.length === 0) {
res.status(404)
.setHeader('content-type', 'application/json')
.send({error: 'loan bookId was not found!'});
} else {
rows.forEach(row =>
loans.push({id: `${row.id}`, bookID: `${row.bookID}`}));
res.status(200)
.setHeader('content-type', 'application/json')
.send(loans);
}
});
}else if(studentId){
if(!Number.isInteger(parseInt(studentId))){
return res.status(422)
.setHeader('content-type', 'application/json')
.send({error: 'studentId not numeric'});
}
db.all('SELECT * FROM loan WHERE studentID=?', studentId, (err, rows) => {
if (err) {
return res.status(422)
.setHeader('content-type', 'application/json')
.send({error: 'Problem while querying database'});
}
if (rows.length === 0) {
res.status(404)
.setHeader('content-type', 'application/json')
.send({error: 'loan studentId was not found!'});
} else {
rows.forEach(row =>
loans.push({id: `${row.id}`, studentID: `${row.studentID}`}));
res.status(200)
.setHeader('content-type', 'application/json')
.send(loans);
}
});
}else{
return res.status(400)
.setHeader('content-type', 'application/json')
.send({error: 'Please provide required query string'});
}
});
uj5u.com熱心網友回復:
簡單的回答:
app.get('/assignment/loans', (req, res) => {
const id = req.query.studentID ? req.query.studentID : req.query.bookID
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434083.html
標籤:javascript 节点.js sqlite 表示
