おそらくnullポインタ例外が発生しているようです。 RxJava v2ではnullsは受け入れられません。あなたの最初の地図は問題を引き起こす可能性が高いです。あなたはrxjavaで条件付きロジックを必要とし、オブジェクトを返すことはできませんとき
は、一般的に次の2つのオプションがあります:
- 戻る意味オブジェクトをヌル
- は、LIKE演算子を使用します(そしておそらくそれをフィルタリング)フラットマップを追加して空のオブザーバブルに追加する
おそらくnullポインタ例外が発生しているようです。 RxJavav2ではnullsは受け入れられません。あなたの最初の地図は問題を引き起こす可能性が高いです。
オプション1
validateProduct(payload)
.map.(r -> {
if(r.getBoolean("valid")){
return createProduct(productPayload);
}else{
return createEmptyProduct(); // generate non null placeholder object
}
})
.filter(r->{
// check here via method call or instanceOf to filter out empty products
r instanceof ValidProduct
}).map(r -> {
return linkCategories(catPayload);
})
.map(r -> {
return linkTags(tagPayload);
})
.doOnError(e -> log.error(e))
.subscribe(r -> {
JsonObject response = new JsonObject().put("status", true);
request.end(response);
}, e -> {
JsonObject response = new JsonObject().put("status", false);
request.end(response);
});
あなたがObservable.empty()を返す `戻ってきている2番目のオプションでオプション2
validateProduct(payload)
.flatMap(r -> {
if(r.getBoolean("valid")){
return createProduct(productPayload); // Assuming this returns an observable if not use Observable.just(createProduct(productPayload))
}else{
return Observable.empty(); // request.end() | end the chain here with some message as invalid product.
}
})
.map(r -> {
return linkCategories(catPayload);
})
.map(r -> {
return linkTags(tagPayload);
})
.doOnError(e -> log.error(e))
.subscribe(r -> {
JsonObject response = new JsonObject().put("status", true);
request.end(response);
}, e -> {
JsonObject response = new JsonObject().put("status", false);
request.end(response);
});
;'、意志 'linkCategories(catPayload)'と呼ばれます? –
@MinatoNamikazenope –