Я создаю базовое приложение реагирования, которое получает данные из серверной службы express.js, подключенной к базе данных Azure.
В прошлом я создал бэкэнд-сервисы express.js, и он всегда работал хорошо, но на этот раз React не читает строку json должным образом.
Express.js код
var sql = require('mssql');
var sqlConfig = {
user: 'xxxx',
password: 'xxxx',
server: 'xxx.database.windows.net', // don't add tcp & port number
database: 'xxx',
options: {
encrypt: true
}
};
router.get('/foglamps', function(req, res, next) {
(async function () {
try {
console.log("sql connecting......")
let pool = await sql.connect(sqlConfig)
let result = await pool.request()
.query("GetFogLamps") // subject is my database table name
console.log("Fog Lamps: " + result.recordset[0].fogLampCount)
/* Send data back to user requesting */
//
res.setHeader('Content-Type', 'application/json');
res.json({fogLampCount: result.recordset[0].fogLampCount});
res.send();
sql.close();
} catch (err) {
console.log(err);
}
})()
Реагировать
Я могу просмотреть возвращенный JSON в веб-браузере и почтальоне, и он выглядит так:
{ "fogLampCount": 12960}
Я получаю следующую ошибку:
Необработанный отказ (SyntaxError): неожиданный токен <в JSON в позиции 0 </p>
Если я заменю выборку на известный API, который работает, он работает нормально.
Любая помощь приветствуется. Благодаря.
class Dashboard extends Component {
constructor(){
super();
this.state = {
data: null,
chartData:{},
fogLampsOrdered: 120000,
fogLampsPending: 500000,
fogLampsCompleted: 48000,
defectedFogLamps: 150,
ordersCompleted: 50,
fogLampCount: 0,
rawData: 0,
}
}
componentWillMount(){
this.getChartData();
}
componentDidMount() {
//fetch('https://secure.toronto.ca/cc_sr_v1/data/swm_waste_wizard_APR?limit=1000')
fetch('/users/foglamps')
//Complete promise to receive body text as JSON object
.then(res => res.json())
//Add JSON object to rawData array in state
.then(rawData => this.setState({rawData}));
};