我有一个数据库的结构:

-requests
-userID
-requests
-requestingUserID1 : groupID1
-requestingUserID2 : groupID2如何通过HashMap的键删除特定请求?假设我有一些requestingUserID,我想删除它。到目前为止我有:
val updates = HashMap<String, Any>()
// updates["/requests/${firebaseUser.uid}/friendId"] = FieldValue.delete() // verion 1
updates["/requests/${firebaseUser.uid}/requests.${friendId}}"] = FieldValue.delete() //version 2
// more updates
db
.updateChildren(updates) // error occurs here
// onCompleteListener()我得到以下错误:
com.google.firebase.database.DatabaseException: No properties to serialize found on class com.google.firebase.firestore.FieldValue$DeleteFieldValue发布于 2021-01-25 08:57:55
从Firebase实时数据库中删除记录的最简单解决方案是使用"removeValue()“方法,如下代码行所示:
val rootRef = FirebaseDatabase.getInstance().getReference()
val friendIdRef = rootRef.child("requests/${firebaseUser.uid}/requests/${friendId}")
friendIdRef.removeValue().addOnCompleteListener(object : OnCompleteListener<Void?>() {
fun onComplete(task: Task<Void?>) {
if (task.isSuccessful()) {
Log.d(TAG, "Item successfully deleted.")
}
}
})您正在使用的delete()方法是Firestore的一部分。虽然这两个数据库都是Firebase的一部分,但它们都是两种不同的产品,具有两种不同的机制。
发布于 2021-01-25 09:21:11
使用Iterator.hasNext()方法在HashMap上迭代。在迭代运行时,检查该迭代中的值是否等于指定的值。通过entry.getValue()方法可以获得映射的入口值。如果该值匹配,则使用remove()方法从HashMap中删除该迭代的条目。已成功地删除了所需的条目。
我在下面提到了一个语法:
Iterator>
iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = iterator.next();
if (valueToBeRemoved.equals(entry.getValue())) {
iterator.remove();
}
}remove()方法语法是:
hashmap.remove(对象键,对象值);
在这里,hashmap是HashMap类的一个对象。Remove方法接受两种类型的参数:
specified.
https://stackoverflow.com/questions/65881089
复制相似问题