【问题标题】:Realm Overrides Object in DB领域覆盖数据库中的对象
【发布时间】: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


【解决方案1】:

当我重构将帐户保存到数据库中的部分时,我也将主键分配移到了那里,并且不知何故允许我添加更多对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多