MongoDB getById возвращает 200, но пустое тело

Попробуйте познакомиться с MongoDB. Для этого я построил небольшую аббликацию с Java sprig-boot. Также я установил базу данных в MongoDB Cloud. Проблема в том, что я не могу вернуть какую-либо запись в базе данных по идентификатору - он всегда возвращает null, но 200 в порядке ...

Я реализовал id как строковое значение, так как это рекомендуется. Но я уже пробовал Long и BigInteger, с тем же результатом ...

Мои методы контроллера:

      public class SongsInfoController {

    private final SongInfoService songInfoService;

    @GetMapping(value = "/{id}", headers = "Accept=application/json", produces = 
            {MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<SongInfo> getSongInfoById(@PathVariable(value = "id") String id) {
        SongInfo songInfo;
        try {
             songInfo = songInfoService.getSongInfoById(id);
        } catch (Exception e) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
        return new ResponseEntity<>(songInfo, HttpStatus.OK);
    }

    @GetMapping(value = "/songid={songId}", headers = "Accept=application/json", produces = 
            {MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<SongInfo> getSongInfoBySongId(@PathVariable(value = "songId") 
            Integer songId) {
        SongInfo songInfo = songInfoService.getSongInfoBySongId(songId);
        if (songInfo == null)
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        return new ResponseEntity<>(songInfo, HttpStatus.OK);
    }
}

Соответствующие методы из SongInfoService выглядят следующим образом:

      @RequiredArgsConstructor
@Service
public class SongInfoServiceImpl implements SongInfoService {

    private final SongInfoRepository songInfoRepository;

    @Override
    public SongInfo getSongInfoById(String id) {
        SongInfo songInfo = songInfoRepository.findById(id).orElse(null);
        return songInfo;
    }

    @Override
    public SongInfo getSongInfoBySongId(Integer songId) {
        List<SongInfo> songInfo = new ArrayList<>();
        for(SongInfo info : songInfoRepository.findAll())
            if(info.getSongId() == songId)
                songInfo.add(info);
        return songInfo.get(0);
    }
}

А вот и мои записи в базе данных:

Когда я выполняю GET с помощью songId, он возвращает мне ожидаемое значение, но ничего не возвращает (кроме 200 в порядке), когда я получаю по songInfoId.

Также PUT не работает ... Вот он говорит мне ПЛОХОЙ ЗАПРОС!

Кто-нибудь знает, что здесь происходит? Для меня это похоже на что-то специфическое для mongodb. Пожалуйста помоги!

0 ответов

Другие вопросы по тегам