Удаление элементов карты из Google Cloud Firestore - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь удалить карту <> из Google Cloud Firestore.

Я использую следующий код для обновления в Firestore

fun updateData(userId: String, values: Map<String, Any>) =
        db.collection(COLLECTION_DATA).document(Id).update(values)

Документ содержит используемый идентификатор, сгенерированный для войдите в систему Google, и одно из полей в документе - map<Key,Value>. Я пытаюсь удалить содержимое поля (удаляя указанную пару c <key,value>)

Я передаю (userId, mapOf("FieldName.${Key}" to FieldValue.arrayRemove(Value))) в качестве параметра при вызове указанной выше функции firestore.

Но после обновления значения в Firestore ключ остается, а значения очищаются.

Если я передаю (userId, mapOf("FieldName" to FieldValue.arrayRemove(Key))) в качестве параметра, то весь map<> удаляется (это то, что я хочу), но структура данных поля преобразуется в массив после выполнения обновления.

1 Ответ

1 голос
/ 26 мая 2020

FieldValue.arrayRemove() только для полей типа массива. Здесь это не сработает, потому что вы фактически не используете какие-либо массивы или списки.

Вам просто нужно использовать FieldValue.delete () , чтобы удалить любой ключ карты и его значение.

updateData(userId, mapOf("FieldName.${Key}" to FieldValue.delete()))
...