Проверьте значение Firebase Child в kotlin - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь настроить приложение базы данных, но я застрял на некоторое время.

Я хочу, чтобы каждый мог записывать данные в базу данных, это ... Если частьинформация уже существует, данные не должны быть перезаписаны.

Пример:

  • Персона 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 Ответ

1 голос
/ 15 октября 2019

Если вы хотите записать значение в базу данных на основе существующего значения (или его отсутствия) в том же месте, вам нужно использовать транзакцию базы данных Firebase .

В вашем случае это будет выглядеть примерно так:

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!!)
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...