具有产生随机串的连续通量的以下代码:
@RestController
public class WebFluxController {
private final Random random = new Random();
@CrossOrigin
@GetMapping(value = "/documents")
public Flux getDocuments() {
return Flux.interval(Duration.ofSeconds(1))
.map(x -> "document-" +
random.nextDouble());
}
}
...我如何用对数据库的查询来替换随机,该查询将返回最后一条记录的字段,如下所示:
@RestController
public class WebFluxController {
@Autowired
private ReactiveDocumentRepository reactiveDocumentRepository;
@CrossOrigin
@GetMapping(value = "/documents")
public Flux getDocuments() {
return Flux.interval(Duration.ofSeconds(1))
.map(x -> "document-" +
reactiveDocumentRepository.findLastDocument().map(d->d.getDescription);
}
}
}
...其中reactiveDocumentRepository.findLastDocument()返回一个mono,其中包含插入到数据库中的最后一个文档?换句话说,我希望该查询在数据库中连续运行,并始终发布最后插入的记录
1条答案
按热度按时间4ioopgfo1#
在reactive中,你需要使用运算符来构建一个流,当下游(在你的例子中是webflux)订阅流时,这个流将被求值。结果不是立即可用的,你不能只是将它与一个字符串连接起来。
reactiveDocumentRepository.findLastDocument()
是reactive,你需要使用flatMap
而不是map
。