GET请求不起作用,但POST请求对数据库查询起作用



我使用Express作为后端,由于某种原因,我的GET请求无法查询Postgres数据库。我很确定我应该使用GET请求来查询数据库,但似乎无法使其工作。我得到下面的错误。

SyntaxError: Unexpected token < in JSON at position 0

这是GET请求的代码

const express = require("express");
const router = express.Router();
const pool = require("./db");
router.get("/", async (req, res, next) => {
pool.connect((err, client, done) => {
if (err) throw err;
client.query("SELECT * FROM pledges", (err, ress) => {
done();
if (err) {
console.log(err.stack);
} else {
console.log(ress.rows[0]);
res.json(ress.rows.reverse());
}
});
});
});

但是,如果我将其更改为POST请求,我将获得正确的查询并返回整个表。我做错了什么?

const express = require("express");
const router = express.Router();
const pool = require("./db");
router.post("/", async (req, res, next) => {
pool.connect((err, client, done) => {
if (err) throw err;
client.query("SELECT * FROM pledges", (err, ress) => {
done();
if (err) {
console.log(err.stack);
} else {
console.log(ress.rows[0]);
res.json(ress.rows.reverse());
}
});
});
});

这是我的FETCH

useEffect(() => {
fetch("/pledges")
.then((response) => response.json())
.then((data) => {
console.log(data);
setPledges(data);
})
.catch((error) => {});
}, []);

使用POST请求提取

useEffect(() => {
fetch("/pledges", {
method: "POST",
})
.then((response) => response.json())
.then((data) => {
setPledges(data);
})
.catch((error) => {});
}, []);

服务器可能返回的不是JSON,而是带有"lt"例如XML或HTML。请尝试适当设置内容标头。

fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json"
}
})

最新更新