我有以下方法:
operator fun invoke(query: String): Flow<MutableList<JobDomainModel>> = flow {
val jobDomainModelList = mutableListOf<JobDomainModel>()
jobListingRepository.searchJobs(sanitizeSearchQuery(query))
.collect { jobEntityList: List<JobEntity> ->
for (jobEntity in jobEntityList) {
categoriesRepository.getCategoryById(jobEntity.categoryId)
.collect { categoryEntity ->
if (categoryEntity.categoryId == jobEntity.categoryId) {
jobDomainModelList.add(jobEntity.toDomainModel(categoryEntity))
}
}
}
emit(jobDomainModelList)
}
}
它在存储库中搜索调用search
返回Flow<List<JobEntity>>
. 然后对于JobEntity
流程中的每一个,我需要从数据库中获取该作业所属的类别。一旦有了该类别和作业,我就可以将作业转换为域模型对象 ( JobDomainModel
) 并将其添加到列表中,该列表将作为方法的返回对象在流中返回。
我遇到的问题是什么都没有发出。我不确定在 Kotlin 中使用流时是否遗漏了一些东西,但我没有通过 ID ( categoriesRepository.getCategoryById(jobEntity.categoryId)
) 获取类别,然后它可以正常工作并发出列表。
提前非常感谢!