![](/img/trans.png)
[英]Can I query and retrieve Documents' field values in Subcollection in Cloud Firestore?
[英]How can I retrieve a subcollection in firestore with spring framework?
我有一个存储在 Firestore 上的数据库,其结构如下:
-Collection
----Document
-------Subcollection
----------Documents with Data
----Document
-------Subcollection
----------Documents with Data
----Document
-------Subcollection
----------Documents with Data
我想检索位于子集合中的文档,但我似乎无法使用以下代码:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collectionName = "states")
public class State {
@DocumentId
String name;
int num_of_listings;
Flux<Listing> listings;
}
清单的代码是:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collectionName = "listings")
public class Listing {
@DocumentId
String id;
String description;
}
想象一下每个“状态”都包含一些“列表”。 每个 POJO 都伴随着一个 controller 和FirestoreReactiveRepository
类型的存储库注入,如下所示:
@Repository
public interface StateRepository extends FirestoreReactiveRepository<State> {
}
@RestController
@RequestMapping("/states")
@Slf4j
@RequiredArgsConstructor
public class StateController {
private final StateRepository stateRepository;
@GetMapping
private Flux<State> getAllStates() {
return stateRepository.findAll();
}
}
当我使用getAllStates()
请求所有状态时,我得到一个 null listings
字段,而所有其他字段都按预期进行了初始化。 我怎样才能实现所需的功能?
@Edit:如果有直接访问子集合的方法,也欢迎!
看起来它不起作用,因为您在实体 class 中使用了 Flux 类型的字段。
Flux<Listing> listings;
但该项目目前不支持该类型的collections。 尝试使用List<Listing>
代替。
编辑:
您的实体 class 应如下所示:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collectionName = "states")
public class State {
@DocumentId
String name;
int num_of_listings;
List<Listing> listings;
}
试试@DBRef(db="listings")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(collectionName = "states")
public class State {
@DocumentId
String name;
int num_of_listings;
@DBRef(db="listings")
Flux<Listing> listings;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.