我遇到了一个我不理解的错误,我花了几个小时对其进行调试,但是我正在努力解决该问题。我是 reactivestreams mongo客户端的新手,这是核心问题。
所以此代码有效:
Single.fromPublisher(getCollection().insertOne(newUser))
.map(success -> newUser)
此代码导致ArrayIndexOutOfBoundsException:3错误:
private void validateEmailAddress(String email) {
boolean valid = EmailValidator.getInstance().isValid(email);
if(!valid) {
throw new InvalidParameterException("email address is not valid");
}
Long count = Flowable.fromPublisher(
getCollection()
.find(eq("emailAddress", email))).count().blockingGet();
if(count > 0){
throw new InvalidParameterException("email address is already in use");
}
}
我想补充一点,当集合中没有记录时,不会发生错误,但是一旦匹配,我就会收到该错误。
通过调试,这是失败的代码(在 org.bson.codecs.pojo.InstanceCreatorImpl 中,我不知道需要进行哪些更改以使其停止失败:
@Override
public T getInstance() {
if (newInstance == null) {
try {
for (Map.Entry<String, Integer> entry : properties.entrySet()) {
params[entry.getValue()] = null;
}
constructInstanceAndProcessCachedValues();
} catch (CodecConfigurationException e) {
throw new CodecConfigurationException(format("Could not construct new instance of: %s. "
+ "Missing the following properties: %s",
creatorExecutable.getType().getSimpleName(), properties.keySet()), e);
}
}
return newInstance;
}
params数组使索引超出范围,但是我不知道没有设置需要设置的属性。
如果有人可以帮助我弄清楚我的失踪之处,我敢肯定这很明显,但是我会喜欢一些指导。