【问题标题】:if/else doese not work in my POST Method of SpringBoot rest apiif/else 在我的 Spring Boot rest api POST 方法中不起作用
【发布时间】:2020-05-15 10:18:02
【问题描述】:

我在 MongoDB 中使用 Spring Boot rest api。 在POST方法中,如果我的收藏中没有scoreID并且没有特定日期的玩家,因为同时一个玩家不能玩不同的游戏并带来分数,那么如果特定的玩家和游戏代码存在,则创建一个分数. 事实上,在 POST 方法中,我使用了嵌套的 IF-ELSE 条件。 但是,在邮递员中,当我使用这些数据执行 POST 请求时: { “得分”:“s11”, “分数”:1000, “玩家”:“萨哈里”, "游戏代码":"g12", “日期”:“2020-01-01” }

总是,我在邮递员中收到一个错误,400 Bad Request!,这是我在我的 IF-ELSE 语句的最后一行定义的。 我不知道,我的错误是什么以及为什么我的程序没有执行 IF 条件正确。

POST 方法:

//Create Score
    @PostMapping
    public ResponseEntity<?> createScore(@RequestBody @JsonView(Views.class) @Valid  Score score) {

        String p = srepo.findByPlayerName(score.getPlayer());
        String g = srepo.findByGameCode(score.getGamecode());
        String scoreid = srepo.findByScoreid(score.getScoreid());
        Query query = new Query();
        query.addCriteria(new Criteria().andOperator(Criteria.where("player").is(score.getPlayer()),
                Criteria.where("date").is(score.getDate())));
        if((scoreid != null)) {
            return ResponseEntity.status(409).body("Conflict!");            }
        else 
            if(mongoTemplate.exists(query, Score.class))
                return ResponseEntity.status(409).body("There is not Possible at same time one player brings different Scores!");
            else
                if((p!= null)&&(g!= null))
                {
                    history = new ArrayList<History>();
                    h = new History();
                    h.setScore(score.getScore());
                    h.setDate(score.getDate());
                    history.add(h);
                    hrepo.save(h);
                    score.setHistory(history);
                    srepo.insert(score);
                    return ResponseEntity.ok(score);
                    }
                else
                {
                    return ResponseEntity.status(400).body("Bad Request!");
                }


    }

乐谱库:

 @Repository
public interface ScoreRepository extends MongoRepository<Score, String>{


    @Query("{'scoreid':?0}")
    public String findByScoreid(String scoreid);

    @Query("{'Player.nickname':?0}")
    public String findByPlayerName(String player);

    @Query("{'Games.code':?0}")
    public String findByGameCode(String game);
}

【问题讨论】:

    标签: spring mongodb spring-boot if-statement spring-data


    【解决方案1】:

    问题不在于我的 IF-ELSE 语句。问题在于分数存储库 我必须为 findByPlayerName 和 findByGameCode 返回一个列表而不是字符串,对于用于检查 POST 方法中的重复项的 findByScoreid,我必须返回 Score 的类型

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 2021-01-19
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多