【发布时间】: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