Я использую микросервисы SpringBoot REST API с MongoDB. В моем приложении у меня есть три службы, и у каждой есть свои базы данных MongoDB. служба оценки для POST нового счета должна проверять, существуют ли игрок и игра, а затем POST новый счет для существующего игрока и игры. В методе POST для этого я использовал экземпляр репозитория игрока и экземпляр игрового репозитория для проверки, существуют ли они или нет. Но я заинтересован в поиске лучшего решения, что-то вроде этой проверки с помощью команд MongoDB в моем методе, или я должен сделать что-то еще в моем репозитории? Я прочитал эту ссылку https://docs.spring.io/spring-data/mongodb/docs/2.1.0.M3/reference/html/, но, поскольку я новичок в springboot и mongodb, я немного запутался. у вас есть какие-нибудь предложения для меня, пожалуйста ?! мой контроллер очков:
@RestController
@RequestMapping("/score")
public class ScoreController {
@Autowired
private ScoreRepository srepo;
@Autowired
private PlayerRepository prepo;
@Autowired
private GameRepository grepo;
@Autowired
private HistoryRepository hrepo;
@Autowired
private MongoTemplate mongoTemplate;
List<History> history;
History h;
//Create Score
@PostMapping
public ResponseEntity<?> createScore(@RequestBody @JsonView(Views.class) @Valid Score score) {
Player p = prepo.findByNickname(score.getPlayer());
Game g = grepo.findByCode(score.getGamecode());
String scoreid = srepo.findByScoreId(score.getScoreid());
if(scoreid!= null)
return ResponseEntity.status(409).body("Conflict!");
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!");
}
}
//Get All scores
@GetMapping
public List<Score> getAllScores() {
return srepo.findAll();
}
}
мой репозиторий очков:
@Repository
public interface ScoreRepository extends MongoRepository<Score, String> {
public String findByScoreId(String scoreid);
//@Query("{'Player.nickname':?0}")
//public List<Score> findByPlayerName(String player);
//@Query("{'Game.code':?0}")
//public List<Score> findByGameCode(String gamecode);
//@Query("{'scoreid':?0}")
//Score findByScoreid(String scoreid);
//@Query("{'score':?0}")
//public List<Score> findByScoresc(Long score);
}