gpt4 book ai didi

android - 决定在 firebase 中创建新项目或更新旧项目

转载 作者:行者123 更新时间:2023-11-29 23:16:23 27 4
gpt4 key购买 nike

我有两种方法,一种是创建新列表项,另一种是更新当前列表项。

private fun addTarget() {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()

if (!TextUtils.isEmpty(name)) {
val id: String = databaseReference?.push()?.key.toString()
val target = Target(guid = id, name = name, description = description)
databaseReference?.child(id)?.setValue(target)
} else Log.d("some", "Enter a name")
}

private fun updateTarget() {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()

val map = mapOf("name" to name, "description" to description)
databaseReference?.child(arguments?.getString(KEY_TARGET_GUID, "") ?: "")?.updateChildren(map)
}

我需要明确区分这两个概念,所以条件有问题。

button?.setOnClickListener { if (condition?????) addTarget() else updateTarget() }

例如,在 Realm 中有一个方法 copyToRealmOrUpdate,它查找 field,如果找到它,则 更新 如果没有,则创建一个新的笔记。我怎样才能在 Firebase 中做这样的事情?

接下来我解决了我的问题:当我转到 fragment 时,我从所有元素的列表中传递 guid,如果它是空的,那么我添加,如果不是,则更新。

button?.setOnClickListener {
if (arguments?.getString(KEY_TARGET_GUID, "").isNullOrEmpty()) addTarget()
else updateTarget()
}

我不知道这是一个很好的解决方案。

最佳答案

如果您使用 exist() 方法,这在 Firebase 中是可能的,如以下代码行:

val valueEventListener = object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists()) {
//Do the update
} else {
//Do the addition
}
}

override fun onCancelled(databaseError: DatabaseError) {
Log.d(TAG, databaseError.getMessage()) //Don't ignore errors!
}
}
databaseReference.child("-LaVYDBpwiIcwhe9qz2H").addListenerForSingleValueEvent(valueEventListener)

关于android - 决定在 firebase 中创建新项目或更新旧项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55284029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com