КАК проверить, существует ли мой плеер и игра из других микросервисов, используя команды MongoDB в другом микросервисе? + SpringBoot - PullRequest
0 голосов
/ 20 июня 2020

Я использую микросервисы 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);

}
...