reactjs - 我正在尝试从我的 sql 数据库获取数据到我的 react 页面,但我的 api 返回一个空数组

http://chucklets.no/getOnlineTime

当我单击它时,我可以看到 JSON,它看起来很好。但是当使用 fetch 它时

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)
    })
);
});

React 代码:

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。任何投入将不胜感激。

回答1

因为当您在浏览器中打开链接时它可以工作并且每次 JS 提取都不起作用,所以我怀疑可能存在一些 CORS 问题并且 Node.js 甚至没有响应。这就是为什么我怀疑 react 中 playerD 变量的默认 value 永远不会更新并保持为空数组的原因。

尝试使用 cors 中间件:https://expressjs.com/en/resources/middleware/cors.html

相似文章

随机推荐

最新文章