首页 > 解决方案 > Spring Boot 和 JavaScript:如何访问 promise 对象字段?

问题描述

我是 JavaScript 新手。我需要您的帮助,以了解这里出了什么问题...

我使用 Spring Boot 作为后端。

我定义了一个返回 MatchStats 对象的 REST API:

public class MatchStats {
    
    private int homeScore;
    private int awayScore;
    private Map<Player, Integer> homePlayersScore;
    private Map<Player, Integer> awayPlayersScore;

    public MatchStats() {
    }

    ...
    
    //getters...
    
}

Player 是一个映射数据库表的实体:

@Entity
@Table(name="player")
public class Player {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;
    
    @Column(name="name")
    private String name;
    
    ...
    
    //getters...
    
}

我在BE 端验证了返回的 MatchStats 对象是完全有效的!

但是,在 FE JavaScript 函数上,调用此 API 后,我似乎不知道如何访问返回的 Promise 对象中的玩家名称字段。

我总是收到“未定义”的价值。

当我在控制台中记录收到的 MatchStats 对象时,我会在地图中看到以下输出:

Object
    HomePlayersScore
        com.ttt.bbsim.model.Player@6bed93f: 1
        com.ttt.bbsim.model.Player@6c1a2709: 11
        com.ttt.bbsim.model.Player@7a79be06: 15
        ...

console.log(Object.getOwnPropertyNames(player)); 给我:

(36) ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "length"]

这是什么意思?

我最新的javascript代码如下:

let response = await fetch(apiCall);
var matchStats = await response.json();
console.log(matchStats); // looks good in console

for (const [player, score] of Object.entries(matchStats.homePlayersScore)) {

    console.log(typeof player); // **gives me a String type for some reason!!!**

    console.log("player: " + player + " score: " + score); 
    // player is undefined. I also tried player.name and player[name] but no use..
    
    

访问玩家姓名字段的方法是什么?

谢谢!

标签: javascriptspringspring-boot

解决方案


推荐阅读