【发布时间】:2018-09-26 09:14:14
【问题描述】:
我有一个对象要保存(到 MongoDB),但在此之前我需要检查某些条件是否为真。
对象包含其他对象的 ID。好像
"object": {
"id": "123",
"subobject1": { "id": "1" },
"subobject2": { "id": "2" }
}
子对象只包含id,其他信息位于其他集合中,所以我必须检查信息是否存在。
在块样式中我可以做类似的事情
if (!languageRepository.exists(Example.of(wordSet.getNativeLanguage())).block()) {
throw new RuntimeException("Native language doesn't exist");
}
if (!languageRepository.exists(Example.of(wordSet.getTargetLanguage())).block()) {
throw new RuntimeException("Target language doesn't exist");
}
只有这样我才能保存我的对象
return wordSetRepository.save(wordSet);
我怎样才能在不阻塞的情况下以“反应式”的方式做到这一点?
【问题讨论】:
-
languageRepository.exists、Example.of、wordSet.getTargetLanguage() - 这都是什么意思?
-
我们去languageRepository检查nativeLanguage和targetLanguage(子对象1和子对象2)是否存在。如果它们存在于languageRepository中,我们可以将这个对象(wordSet)保存到wordSetRepository
-
wordSet 将只保存 nativeLanguage 和 targetLanguage 的 id,而不是完整的对象。完整的对象在 languageRepository 中。
-
我的意思是,它们是什么类型的对象?使用
block()暗示languageRepository.exists是Mono<Boolean>。其他的呢? -
targetLanguage 和 nativeLanguage 属于语言类型(只是一些字段和 id)。 WordSet 包含一些字段(包括 targetLanguage 和 nativeLanguage)和 id。
标签: java mongodb project-reactor reactive reactor