Я пишу реактивный API, который отправляет уведомления на телефоны Android. Процесс отправки уведомления должен получить доступ к коду токена с телефона, чтобы отправить ему сообщение .Для этого я создал конечную точку на стороне сервера для получения токена с телефона.Моя проблема - сохранить токен и затем использовать его в процессе, описанном выше.Это TokenController, TokenService, TokenRepository и Token POJO:
@RestController
@RequestMapping("/api")
public class TokenController {
@Autowired
private TokenService tokenService;
@CrossOrigin
@RequestMapping(value = "/token",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody ResponseEntity<?> newToken(@RequestBody Token token) {
return ResponseEntity.ok(tokenService.save(token));
}
}
//---------------------------------------------------------------
@Service
public class TokenServiceImpl implements TokenService {
@Autowired
private TokenRepository tokenRepository;
@Override
public Mono<Token> save(Token token) {
return tokenRepository.save(token);
}
}
//---------------------------------------------------------------
@Repository
public interface TokenRepository extends ReactiveCrudRepository<Token, Long> { }
//---------------------------------------------------------------
@Data
@Document(collection = "token")
public class Token {
@Id
private Long _id;
private Long clientCode;
private String tokenKey; // VALUE THAT IS NEEDED ON NOTIFICATION
}
Чтобы отправить уведомление, у меня есть контроллер уведомлений, которому требуется доступ к базе данных и поиск токена.Чтение реактивного подхода Я не мог понять, как читать базу данных, используя TokenRepository внутри моей службы уведомлений, и использовать что-то вроде метода «findById» для получения токена.Как я могу использовать возвращенный объект Mono и получить свойство "tokenKey"?