Firebase:如何检查文档写入是否成功

问题描述

我想检查我的数据库写入是否成功,以便向用户显示错误消息。

我当前的方法无效,因为它显示“类型不匹配,找到了必需的单位EmailStatus”

当前方法

class EmailRepositoryImpl : EmailRepository {
    private val db = Firebase.firestore

    override fun sendEmail(email: Email): EmailStatus<Nothing> {
        db.collection("emails").document().set(email).addOnCompleteListener {
            if (it.isSuccessful) return@addOnCompleteListener EmailStatus.Success<Nothing>
            if (it.isCanceled) return@addOnCompleteListener EmailStatus.Error(it.exception!!)
        }
    }
}

状态密封类

sealed class EmailStatus<out T> {
    data class Success<out T>(val data: T) : EmailStatus<T>()
    data class Error(val exception: Exception) : EmailStatus<Nothing>()
}

是否有可能编写类似这样的内容?据我所知,有一个通用的firebase error type,但是我没有找到任何与kotlin或android相关的信息...

感谢您的帮助,谢谢

编辑

我尝试获取我的文档,但是我得到的只是空值:(当我使用侦听器方法时,一切都很好)

接口

interface EmailRepository {
    suspend fun getEmail(): Flow<EmailEntity?>
}

接口实现

override suspend fun getEmail(): Flow<EmailEntity?> = flow {
    val result = db.collection("emailprice").document("Email").get().await()
    emit(result.toObject<EmailEntity>())
}

ViewModel

private val emailEntity = liveData<EmailEntity?>(Dispatchers.IO) {
    emailRepository.getCalibratePrice()
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)