首页 > 解决方案 > springboot webflux couchbase API未显示结果

问题描述

我正在开发一个 springboot 反应式 API 来从 couchbase 数据库中获取更新的结果。我有一个基于 N1QL 的存储库,如下所示。

@Repository
@N1qlPrimaryIndexed
public interface LocationDataRepository extends ReactiveCrudRepository<LocationData,String> {

   @Query("#{#n1ql.selectEntity} where  userID=$1 and dataType = $2")
   Flux<LocationData> findByUserIDAndDataType(String userID,String dataType);
}

下面给出了我的宁静 webcontroller 方法。

 @Autowired
    LocationDataRepository locationDataRepository;
    @GetMapping(value="/LocationUpdates", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<LocationData> findLatestLocations(@RequestParam("userID") String userID){
      String dataType = "location";
      return Flux.interval(Duration.ofSeconds(1)).flatMap(X -> locationDataRepository.findByUserIDAndDataType(userID,dataType));
}

我的问题是,当我从浏览器或邮递员访问此端点时,它不会显示任何结果,但会保持刷新。我如何能够使用 LocationRepository 保存数据。我无法弄清楚这里有什么问题。谁可以帮我这个事?谢谢你。

标签: javacouchbasespring-webfluxspring-data-couchbase

解决方案


确保您有 spring-data-couchbase 4.0.1 或更高版本。@Query 是最近才实施的。否则它将生成查询本身,这可能是也可能不是您想要的。如果您在 Couchbase Web 控制台中使用适当的 userID 和 dataType 执行该查询,您会获取数据吗?如果将产品更改为 MediaType.APPLICATION_JSON_VALUE,它会显示在浏览器中吗?


推荐阅读