Безуспешно ищу похожие вопросы. В настоящее время у меня есть приложение Angular и сервер NodeJS / Express, и я использую Sequelize для MariaDB.
У меня есть таблица I хочу собрать статистику и вернуть как простой объект.
getPlayerStats = function(callback) {
Player.findAll({
attributes: [
[sequelize.fn('sum', sequelize.col('points')), 'totalPointsEarned'],
[sequelize.fn('count', sequelize.col('id')), 'totalPlayers'],
[sequelize.fn('sum', sequelize.col('online')), 'totalOnline']
]
}).then(playerStats => callback(playerStats));
};
'
app.get("/info/player-stats", function(request, response) {
sql.getPlayerStats(result => response.send(result));
});
Это дает мне следующий вывод:
[
{
"totalPointsEarned": 457,
"totalPlayers": 5,
"totalOnline": 2
}
]
Это вызывает проблемы при отображении данных в DOM, если я обработаю их как объект, Angular ничего не отобразит. Если я обработаю его как массив с *ngFor='let player of players'
, он отобразит данные в DOM, но выдаст ошибку:
ERROR Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays
Если , я получу следующий вывод: {}
{
"totalPointsEarned": 457,
"totalPlayers": 5,
"totalOnline": 2
}
.. вместо [{}] я считаю, что мне будет проще отобразить данные в DOM.
я считаю, что мне будет нужно изменить что-то в первой партии кода, размещенной здесь (часть Sequelize), чтобы получить взамен один объект вместо массива только с одним объектом. Любые советы или предложения приветствуются.
Заранее спасибо, Сванте