【发布时间】:2020-08-14 22:41:01
【问题描述】:
我目前正在接触 Kotlin、RealmDB 和 Android Studio 中的 Android 开发。
每当我尝试通过保存按钮将新的帐户领域对象插入数据库时,它似乎会删除最后保存的对象并插入新的对象,因此每个用户只有一个对象在数据库中。我已经调试了这个流程,查询只返回结果集中的一个对象。
private lateinit var firebaseUser:FirebaseUser
private lateinit var firebaseAuth:FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.my_layout)
//init views
realm = Realm.getDefaultInstance()
titleED = findViewById(R.id.title_edit_text)
descED = findViewById(R.id.desc_edit_text)
saveAccountBtn = findViewById(R.id.saveAccountBtn)
savePsswdBtn.setOnClickListener {
addAccountToDB()
}
}
private fun addAccountToDB(){
try{
realm.beginTransaction()
firebaseAuth = FirebaseAuth.getInstance()
firebaseUser = firebaseAuth.currentUser!!
val account = Account()
account.id = //generatesID()
account.title = titleED.text.toString()
account.desc = descED.text.toString()
account.userID = firebaseUser.uid
//copy to DB
realm.insertOrUpdate(account)
realm.commitTransaction()
Toast.makeText(this, "Success!", Toast.LENGTH_SHORT).show()
startActivity(Intent(this, InitialActivity::class.java))
finish()
}catch (ex:Exception){
Toast.makeText(this, "Failed $ex ", Toast.LENGTH_SHORT).show()
}
}
对象类
open class Account (
@PrimaryKey
var id:Int?=null,
var title:String?=null,
var desc:String?=null,
var userID:String?=null
) :
我在上面使用 Realm 是否以某种方式清理了用户的数据库并保存了新对象?我使用了帐户的主键(account.id 成员)来查看是否影响它,但同样的问题仍然存在。也在 Realm 的 .insertOrUpdate() 和 .copyToRealmOrUpdate() 之间交替。
【问题讨论】:
-
嗨熊猫。这个问题与 Firebase 有什么关系?
-
不是很多,我选择标记以防我从 Firebase 用户(即这一行:
account.userID = firebaseUser.uid)获取可能导致此处出现的错误的 uid 信息时忽略了某些内容。跨度>
标签: android firebase kotlin realm