gpt4 book ai didi

angular - 在 Sequelize 中返回对象而不是一个对象的数组

转载 作者:行者123 更新时间:2023-12-03 22:36:24 26 4
gpt4 key购买 nike

一直在寻找类似的问题但没有成功。我目前有一个 Angular 应用程序和一个 NodeJS/Express 服务器,并为 MariaDB 使用 Sequelize。

我有一个表,我想从中收集统计数据并作为一个简单的对象返回。

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 部分)以获取单个对象作为返回,而不是只有一个对象的数组。任何意见或建议都非常受欢迎。

提前致谢,
斯万特

最佳答案

这取决于您的需求。findAll 返回一个数组,因为您想找到与查询匹配的所有案例(因此它可能是数组中的某些对象)。
如果您的查询始终返回单个对象,您可以使用 find 而不是 findAll,然后您将获得一个对象。

否则,只需在后端使用 [].map()[].forEach 函数即可访问数组内的任何对象。

关于angular - 在 Sequelize 中返回对象而不是一个对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59829348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com