在Kotlin中检查Firebase Child值

时间:2019-10-14 18:21:04

标签: firebase kotlin firebase-realtime-database

我正在尝试设置一个数据库应用程序,但是有点卡住了。

我希望每个人都可以将数据写入数据库,这是..如果已经存在一条信息,则数据不应被覆盖。

示例:

  • 人员A添加:cd-title + BandA
  • 数据库会将此信息保存在两个孩子以下

    personA private --->
                 Cd-title, Band A
    
    Database --->
          Cd-title, Band A
    
  • 人员B添加:cd-title + BandA

    personB private --->
                 Cd-title, Band A
    
    Database--->
         // error child already exists
    

按代码排序应类似于

get value. child
       if !=null
         error child already exists
       if = null
         info succesfully saved

   val ref = FirebaseDatabase.getInstance().getReference("/Wishlist/$uid/$album")

        val Vinyl_piece = Albumadd(aAlbum, bBand, nName, gGenre, bBuildyear, SideA1, SideA2, SideA3, SideA4, SideA5)

        ref.setValue(Vinyl_piece)

1 个答案:

答案 0 :(得分:1)

如果要基于同一位置上的现有值(或缺少该值)将值写入数据库,则需要use a Firebase Database transaction

在您的情况下,外观类似于:

postRef.runTransaction(object : Transaction.Handler {
    override fun doTransaction(mutableData: MutableData): Transaction.Result {
        if (mutableData.value == null) {
            // Set value and report transaction success
            mutableData.value = Vinyl_piece
        }
        return Transaction.success(mutableData)
    }

    override fun onComplete(
        databaseError: DatabaseError?,
        b: Boolean,
        dataSnapshot: DataSnapshot?
    ) {
        // Transaction completed
        Log.d(TAG, "runTransaction:onComplete:" + databaseError!!)
    }
})