Я пытаюсь заполнить табличный компонент в ReactJS из базы данных SQLite. Если я экспортирую нужную мне таблицу базы данных в json и импортирую ее, она отлично работает. Если я вместо этого извлекаю те же данные через экспресс, независимо от того, как я их форматирую, они не заполняют мою таблицу.
/* Table Component */
export default class SortableTable extends Component {
constructor(props)............................
callAPI() {
fetch("http://localhost:9000/testDB/")
.then(res => res.text())
.then(res => this.setState({ apiResponse: res }));
}
componentWillMount() {
this.callAPI();
}
render() {
var dbArray = this.state.apiResponse;
console.log(eval(dbArray));
return (
<div>
<DataTable
title="Season 1 Leaderboard"
data={dbArray}
/>
<p>{this.state.apiResponse}</p>
</div>
)
}
}
/* Express API */
var express = require('express');
var router = express.Router();
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('./preseason.sqlite3', (err) => {
if (err) {
console.error(err.message);
}
console.log('Connected to the preseason database.');
});
router.get('/', (req, res) => {
let sql = `SELECT nick, rank, wins, loses FROM channel_players`;
db.all(sql, [], (err, rows, fields) => {
if (err) {
throw err;
}
console.log(rows);
console.log('This function will return a list of all stored items from database ' + rows);
res.setHeader('Content-Type','application/json')
res.json(rows);
})
});
module.exports = router
"eval (dbArray)" показывает this.state.apiResponse как массив, и данные возвращаются как действительный JSON из JSON Linter.
Если я использую:
var dbArray = JSON.parse(this.state.apiResponse
Возвращается эта ошибка: «JSON.parse: неожиданный конец данных в строке 1 столбца 1 данных JSON»
Если я использую:
var dbArray = JSON.parse ("[" this.state.apiResponse "]")
Тогда у меня нет ошибки синтаксического анализа, но таблица показывает только 1 элемент в своем индексе (но не отображает его). С кодом, приведенным в больших блоках выше, в таблице показано количество элементов в индексе, равное количеству символов в "this.state.apiResponse.
Я только начал изучать React и тому подобное несколько дней назад, прошу прощения, если я упустил что-то очевидное. Но сегодня я уже 14 часов бьюсь головой об этом, и я в растерянности.