【发布时间】:2019-12-31 22:27:15
【问题描述】:
我的 mongoDB 中有 2 个集合:
1.users集合,包含用户电话号码,是否经过验证?
{
_id: '12123',
phones: [
{
phoneNumber: '1234567890',
verified: false
}
]
}
2. verificationTokens 集合,其中包含由用户集合中的 id 映射为 userId 的验证码。
{
_id: '1111',
userId: '12123',
token: '4545'
}
我正在 Spring WebFlux 中创建一个端点来验证电话号码。端点接收 userId 和 verificationCode。如果集合中的token与用户发送的token匹配,则在用户集合中更新verified为true。
我正在尝试编写一个将由该端点调用并进行所需更改的函数。
我尝试了以下代码,但验证状态未更新为 true。
public Mono<VerifyPhoneToken> verifyPhoneNumber(String id, String verificationCode) {
return verifyPhoneTokensRepository.findByUserId(id)
.flatMap(vpt -> {
if (verificationCode.equals(vpt.getToken())) {
usersRepository.findById(id)
.flatMap(user -> {
user.getPhones().get(0).setVerified(true);
return usersRepository.save(user);
});
return verifyPhoneTokensRepository.save(vpt);
}
return null;
});
}
另外,我想知道return null 是否可以以更好的方式处理。
【问题讨论】:
-
你不应该返回null,你应该返回一个mono.empty()
标签: java mongodb spring-webflux