Mam jedną bazę danych postawioną na zewnętrznym serwerze (mongodb.com).
Łącze się do niej lokalnie z apki Springowej podczas developmentu jak i po deploymencie tej apki na Heroku.
Generalnie wszystko działa poza jednym zapytaniem.
List<ProductDto> getDailyConsumption(String username, LocalDate date) {
final List<ProductDto> result = new ArrayList<>();
repository.getDailyConsumption(username, date).ifPresentOrElse(daily -> {
System.out.println(username + " has daily consumption record for " + date);
result.addAll(productFacade.getProducts().stream().filter(daily.getProducts()::contains).collect(Collectors.toList()));
}, () -> {
System.out.println(username + " has no daily consumption record for " + date);
});
return result;
}
Po stronie repozytorium wygląda to tak
@Override
public Optional<DailyConsumptionDto> getDailyConsumption(String username, LocalDate date) {
return Optional.ofNullable(mongoTemplate.findOne(queryFactory.usernameDateQuery(username, date), DailyConsumptionEntity.class))
.map(result -> converter.toDto(result, username));
}
@Override
public List<ProductDto> getProducts() {
return mongoTemplate.findAll(ProductEntity.class).stream().map(converter::toDto).collect(Collectors.toList());
}
Query usernameDateQuery(String username, LocalDate date) {
var query = new Query(Criteria.where(USERNAME).is(username).and(DATE).is(date));
System.out.println(query);
return query;
}
sout na potrzeby Heroku gdzie mam skonfigurowanego loggera, w każdym razie zarówno przy strzale na localhoscie jak i na heroku dostaje coś takiego
No i tutaj pojawia się mój problem, na localhoscie to zapytanie zwraca mi to czego szukam, a na Heroku już nie - rezultat wykonania tej operacji jest pusty. Pytanie tylko jak to możliwe, skoro w jednym i drugim miejscu baza danych jest taka sama?