Spring Boot MongoDB findTop5 возвращает пустой массив - PullRequest
0 голосов
/ 06 марта 2019

Я использую Spring Boot и MongoDB для личного проекта по созданию базы данных фильмов и видеоигр.У меня есть методы, которые получают последние пять записей каждой категории.Когда я тестировал на локальном сервере Tomcat и MongoDB, методы работали как положено.Однако при развертывании на сервере Tomcat и подключении к серверу MongoDB методы, которые получают последние пять записей, всегда возвращают пустой массив.вот код:

Репозиторий:

public interface MovieRepository extends MongoRepository<Movies, String>{
    public List<Movies> findAllByOrderByTitleAsc(Pageable pageable);

    @Query("{'title': {$regex: ?0, $options: 'i'}}")
    public List<Movies> findByTitle(String title);

    public List<Movies> findTop5ByCreatedAtLessThan(String currentDate);

    public Movies findMovieById(String id);

    public List<Movies> findByPlatformsIn(List<String> platforms);
}

Контроллер:

@RestController
@RequestMapping("/api")
public class MovieController {
    @Autowired
    private MovieRepository movieRepository;
    @Autowired
    private MapValidationErrorService mapValidationErrorService;
    @Autowired
    private CurrentDateService currentDateService;

    @GetMapping("/movies")
    public List<Movies> findAllMovies(@RequestParam(value="page",       defaultValue="0")int page) {
    return movieRepository.findAllByOrderByTitleAsc(PageRequest.of(page, 20));
    }

    @GetMapping("/movies/{movieId}")
    public Movies findMovieById(@PathVariable("movieId") String movieId) {
        return movieRepository.findMovieById(movieId);
    }

    @PostMapping("/movies")
    public ResponseEntity<?> saveMovie(@Valid @RequestBody Movies movie, BindingResult result) {
        ResponseEntity<?> errorMap = mapValidationErrorService.mapvalidationService(result);

        if (errorMap != null) return errorMap;

        movie.setId(null);

        Movies newMovie = movieRepository.save(movie);

        return new ResponseEntity<Movies>(newMovie, HttpStatus.OK);
    }

    @PutMapping("/movies")
    public ResponseEntity<?> updateMovie(@Valid @RequestBody Movies movie, BindingResult result) {
        ResponseEntity<?> errorMap = mapValidationErrorService.mapvalidationService(result);

        if (errorMap != null) return errorMap;

        Movies updatedMovie = movieRepository.save(movie);

        return new ResponseEntity<Movies>(updatedMovie, HttpStatus.OK);
    }

    @DeleteMapping("/movies/{movieId}")
    public void deleteMovieById(@PathVariable("movieId") String movieId) {
        movieRepository.deleteById(movieId);
    }

    @GetMapping("/moviePlatforms")
    public List<Movies> findMoviesByPlatforms(@RequestParam(value="platform") List<String>platforms) {
        return movieRepository.findByPlatformsIn(platforms);
   }

    @GetMapping("/newFiveMovies")
    public List<Movies> findTop5ByCreatedAt() {
        String currentDate = currentDateService.getCurrentDate();

        return movieRepository.findByCreatedAt(currentDate);
    }
}

Я изменил топ-5 методов поиска, чтобы использовать аннотацию @Query, но этодает те же результаты.Все остальные методы в контроллере и хранилище работают как положено.Я пытался использовать MongoDB на Mac, а также на MongoDB Atlas.Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 07 марта 2019

Я выяснил, что дата, которую я отправлял в качестве параметра, была отформатирована неправильно. Дата сохранялась как «М / д / ггг ч: мм а», но я отправлял «М / дд / гггг чч: мм а».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...