我正在使用 PostgreSQL 資料庫進行 React 專案,這是我第一次使用它,在查詢特定列時出現 42703 錯誤。
下面是我寫的查詢代碼
const getList = (userId) => {
return new Promise(function (resolve, reject) {
pool.query(`SELECT items FROM public."user" where id=${userId}`, (error, results) => {
if (error) {
reject(error)
}
resolve(results);
})
})
}
我已經定義了這個 getList 函式,然后我通過像這樣傳遞 userId 來呼叫這個函式
app.get(`/expenses`, verifySession(), async (req, res) => {
const userId = req.session.userId;
database.getList(userId)
.then(response => {
res.status(200).send(response);
})
.catch(error => {
res.status(500).send(error);
})
})
我什至嘗試直接傳遞 userId 如下所示,仍然給我同樣的錯誤,這可能意味著我以錯誤的方式查詢
app.get(`/expenses`, verifySession(), async (req, res) => {
//const userId = req.session.userId;
database.getList('17a6dea6-a63e-4da7-9910-df7eddb672e6')
.then(response => {
res.status(200).send(response);
})
.catch(error => {
res.status(500).send(error);
})
})
只有當我直接在查詢中寫入字串時,它才能像這樣正常作業
const getList = (userId) => {
return new Promise(function (resolve, reject) {
pool.query(`SELECT items FROM public."user" where id='17a6dea6-a63e-4da7-9910-df7eddb672e6'`, (error, results) => {
if (error) {
reject(error)
}
resolve(results);
})
})
}
有人可以幫助我們解決究竟出了什么問題,我的語法是否正確?
這是我呼叫 api 的前端部分。
function getDataForUser() {
fetch(`http://localhost:3001/data`)
.then(response => {
return response.json();
}).then(data => {
console.log(data.rows[0]);
})
}
uj5u.com熱心網友回復:
發生此問題是因為您沒有在查詢中對字串型別使用單引號。當使用where id=${userId}和呼叫17a6dea6-a63e-4da7-9910-df7eddb672e6轉換為時where id=17a6dea6-a63e-4da7-9910-df7eddb672e6,這會產生問題。
您可以使用兩種情況來處理它:
- 對字串型別使用單引號:
const getList = (userId) => {
return new Promise(function (resolve, reject) {
pool.query(`SELECT items FROM public."user" where id='${userId}'`, (error, results) => {
if (error) {
reject(error)
}
resolve(results);
})
})
}
- 使用引數系結(默認為轉換型別)
const getList = (userId) => {
return new Promise(function (resolve, reject) {
pool.query(`SELECT items FROM public."user" where id=$1`, [userId], (error, results) => {
if (error) {
reject(error)
}
resolve(results);
})
})
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417608.html
標籤:
