无法获取(res.json)数据来等效于导入的json数据

时间:2019-06-21 04:43:41

标签: reactjs sqlite express

我正在尝试从SQLite数据库填充ReactJS中的表组件。如果将我需要的数据库表导出到json中,然后将其导入,则效果很好。如果我改为通过express获取相同的数据,则无论我如何格式化,它都不会填充我的表。

/* 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 Linter作为有效JSON返回。

如果我使用:

var dbArray = JSON.parse(this.state.apiResponse

返回此错误:“ JSON.parse:JSON数据的第1行第1列的数据意外结束”

如果我使用:

var dbArray = JSON.parse ("[" this.state.apiResponse "]")

然后我没有解析错误,但是该表在其索引中仅显示1个项目(但不显示它)。使用上面大块中引用的代码,该表在其索引中显示的项目数等于“ this.state.apiResponse”中的字符数。

几天前我才刚刚开始学习React和类似的东西,如果我缺少明显的东西,我深表歉意。但是今天我已经为此奋斗了14个小时,茫然不知所措。

0 个答案:

没有答案