Невозможно получить извлеченные (res.json) данные для работы, эквивалентной импортированным данным json - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь заполнить табличный компонент в 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 часов бьюсь головой об этом, и я в растерянности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...