質問: if(document.exists()){ "既に利用されているIDです" }else { null } return@addOnSuccessListener dbError //ここがエラーになる } } ```
回答: `docRef.get().addOnSuccessListener`でaddしているリスナー `{ document -> ...`は非同期で実行されます。 ですので1のコードだと、docRef.get().addOnSuccessListenerを実行した後すぐに`return dbError`が実行されることになるのでnullが返ることになります。 対応策としては、 1. doCheckメソッドがdocumentが正常に取得できた場合、エラーの場合のそれぞれのコールバック関数を引数として受け取るか 2. あるいはcoroutineで非同期処理に対応した実装にする などがあると思います。 1の場合のサンプルです。 ``` private fun dbCheck(userid:String, onSuccess:()->Unit, onError:() -> Unit) { ... ... if(document.exists()){ onError() }else { onSuccess() } .... ``` (この実装だとメソッド名と実行している内容が噛み合ってないですが・・) 2の非同期処理は少々長くなるので、次の記事等が参考になるかと思います。