Spring WebFlux: block() 方法 return Spring 数据反应中的 null MongoDB
Spring WebFlux: block() method return null in Spring Data Reactive MongoDB
我正在尝试学习 Reactor 项目但遇到了问题。
@Test
@DisplayName("check that standaloneUser fields are correct")
void validateUserFields() {
userService.save(standaloneUser).subscribe();
assertEquals(userService.count().block(), Long.valueOf(1));
User user = userService.findByEmail("test@gmail.com").block();
assertNotNull(user);
assertNotNull(user.getId());
assertEquals(user.getFirstName(), "test");
assertEquals(user.getLastName(), "test");
assertNotEquals(user.getPassword(), "test");
assertEquals(user.getRole(), Role.CANDIDATE);
assertNotNull(user.getCreatedDate());
assertNull(user.getStoppedDate());
assertEquals(user.getEmail(), "test@gmail.com");
}
有时 block() 方法 returns 为空。
谁能给我解释一下?
谢谢
block()
can return null,这意味着Mono
完成为空,在这种情况下意味着找不到用户.
难道是没有保存好? (尽管您声明了用户数)
请注意,您会 userService.save(standaloneUser).subscribe()
。这种形式通常并不理想,因为它是 "async fire-and-forget":
- 异步 -> 它可能会在 之后完成后续断言
- 即发即忘 -> 没有错误处理程序意味着它可能会因错误而终止并对您隐藏。
养成在调用 subscribe
.
时至少设置 onNext 和 onError 处理程序 lambda 的习惯
我正在尝试学习 Reactor 项目但遇到了问题。
@Test
@DisplayName("check that standaloneUser fields are correct")
void validateUserFields() {
userService.save(standaloneUser).subscribe();
assertEquals(userService.count().block(), Long.valueOf(1));
User user = userService.findByEmail("test@gmail.com").block();
assertNotNull(user);
assertNotNull(user.getId());
assertEquals(user.getFirstName(), "test");
assertEquals(user.getLastName(), "test");
assertNotEquals(user.getPassword(), "test");
assertEquals(user.getRole(), Role.CANDIDATE);
assertNotNull(user.getCreatedDate());
assertNull(user.getStoppedDate());
assertEquals(user.getEmail(), "test@gmail.com");
}
有时 block() 方法 returns 为空。 谁能给我解释一下? 谢谢
block()
can return null,这意味着Mono
完成为空,在这种情况下意味着找不到用户.
难道是没有保存好? (尽管您声明了用户数)
请注意,您会 userService.save(standaloneUser).subscribe()
。这种形式通常并不理想,因为它是 "async fire-and-forget":
- 异步 -> 它可能会在 之后完成后续断言
- 即发即忘 -> 没有错误处理程序意味着它可能会因错误而终止并对您隐藏。
养成在调用 subscribe
.