我正在尝试设置一个数据库应用程序,但是有点卡住了。
我希望每个人都可以将数据写入数据库,这是..如果已经存在一条信息,则数据不应被覆盖。
示例:
数据库会将此信息保存在两个孩子以下
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)
答案 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!!)
}
})