我正在尝试从我的 sql 数据库获取数据到我的 React 页面,但是我的 api returns 是一个空数组
I am trying to get data from my sql database to my react page, but my api returns an empty array
http://chucklets.no/getOnlineTime
当我单击它时,我可以看到 JSON,它看起来不错。
但是当使用 fetch it
API Node.js 代码:
app.get('/getOnlineTime', (req, res) => {
console.log("Reading rows from the Table...");
const arr = [];
connection.execSql(new Request('SELECT * FROM OnlineTime', function (err, rowCount, rows) {
if (err) {
console.error(err);
}
})
.on('doneInProc', function (rowCount, more, rows) {
var row = {};
for (let i = 0; i < rows.length; i++) {
var row = {};
for (let j = 0; j < rows[i].length; j++) {
row[rows[i][j].metadata.colName] = rows[i][j].value;
}
arr.push(row);
}
res.json(arr)
})
);
});
反应代码:
const [playerD, setPlayerData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const response = await fetch('http://chucklets.no/getOnlineTime', {method:'GET'})
if (!response.ok) {
throw new Error(response.status);
}
const data = await response.text()
setPlayerData(data)
}
fetchData()
}, [])
在 https://nba-players.herokuapp.com/players-stats 上使用 fetch 时,我得到了一个不错的 JSON。任何输入将不胜感激。
因为当您在浏览器中打开 link 并且每次 JS 提取都不起作用时,我怀疑可能存在一些 CORS 问题并且 Node.js 甚至没有响应。这就是为什么我怀疑 react 中 playerD 变量的默认值永远不会更新并保持一个空数组。
尝试使用 cors 中间件:
Express CORS Middleware
http://chucklets.no/getOnlineTime
当我单击它时,我可以看到 JSON,它看起来不错。 但是当使用 fetch it
API Node.js 代码:
app.get('/getOnlineTime', (req, res) => {
console.log("Reading rows from the Table...");
const arr = [];
connection.execSql(new Request('SELECT * FROM OnlineTime', function (err, rowCount, rows) {
if (err) {
console.error(err);
}
})
.on('doneInProc', function (rowCount, more, rows) {
var row = {};
for (let i = 0; i < rows.length; i++) {
var row = {};
for (let j = 0; j < rows[i].length; j++) {
row[rows[i][j].metadata.colName] = rows[i][j].value;
}
arr.push(row);
}
res.json(arr)
})
);
});
反应代码:
const [playerD, setPlayerData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const response = await fetch('http://chucklets.no/getOnlineTime', {method:'GET'})
if (!response.ok) {
throw new Error(response.status);
}
const data = await response.text()
setPlayerData(data)
}
fetchData()
}, [])
在 https://nba-players.herokuapp.com/players-stats 上使用 fetch 时,我得到了一个不错的 JSON。任何输入将不胜感激。
因为当您在浏览器中打开 link 并且每次 JS 提取都不起作用时,我怀疑可能存在一些 CORS 问题并且 Node.js 甚至没有响应。这就是为什么我怀疑 react 中 playerD 变量的默认值永远不会更新并保持一个空数组。
尝试使用 cors 中间件: Express CORS Middleware