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. Пожалуйста помоги!