[英]Collecting int value from the Mono<Entity> object using WebFlux
从 Mono 对象收集值的正确方法是什么? 我有一个名为 Student 的实体,它同时具有 user 和 student id 值。
Mono<Student> student = studentRepository.findStudentByUserid(id);
我想使用 studentId ( student.getStudentId()
) 在不同的表中保存一个新值
StudentSubject ss;
ss.setStudentId(student.getStudentId());
studentsubjectRepository.save(ss);
最好的方法是什么?
你的问题缺乏一些细节,所以我将从这一点上假设一些事情。
假设您的应用程序正在使用此代码:
Mono<StudentSubject> studentSubject = studentRepository.findStudentByUserid(id)
.flatMap(student -> {
StudentSubject subject = new StudentSubject();
subject.setStudentId(student.getStudentId());
return studentsubjectRepository.save(subject);
});
使用flatMap
运算符允许您以反应方式链接调用。
这里可能会发生几件事:
Mono
的内容,就会使用该信息创建一个主题并返回。 订阅部分通常发生在 Spring WebFlux 中,因此您只需要从控制器方法中返回Mono
。Mono.empty()
。 在这种情况下,您的flatMap
运算符将不会被调用,并且有效地返回了一个空的发布者; 没有创建StudentSubject
。 根据您的应用程序的预期行为,您可以查看defaultIfEmpty
或switchIfEmpty
运算符来处理这种情况onError*
运算符处理它。 如果您是 Reactor 的新手,您可以随时在链中的任何位置添加log()
运算符(作为常规运算符),您将在日志中看到准确发生的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.