领域覆盖数据库中的对象

问题描述

我目前正在与Kotlin,RealmDB和Android Studio中的Android开发打交道。

每当我尝试通过“保存按钮”将新的Account Realm对象插入数据库时​​,似乎它会擦除最后保存的对象并插入新的对象,因此每个用户数据库中只有一个对象。我已经调试了此流程,查询仅从结果集中返回一个对象。

    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()之间切换。

解决方法

在重构将帐户保存到数据库中的代码时,我也将主键分配移到了那里,并且以某种方式允许我添加更多对象。