ОБНОВЛЕНИЕ
Я столкнулся с несоответствиями с точечной нотацией Firestore и узнал, что мы должны использовать литеральную нотацию при использовании операции setData
и можем использовать точечную нотацию при использовании updateData
операция.
Следующая операция игнорировала точечную запись:
...setData(
["someMap.\(someId)": FieldValue.increment(Int64(-1))]
, forDocument: Firestore.firestore().collection("someDocument").document(userId), merge: true)
someMap: ["x34JF2ko0sPLnbfoijw": 1] // not decremented
someMap.x34JF2ko0sPLnbfoijw: -1 // instead, new number field created
Чтобы устранить проблему, мы должны просто использовать буквенную запись:
...setData(
["someMap": [someId: FieldValue.increment(Int64(-1))]
, forDocument: Firestore.firestore().collection("someDocument").document(userId), merge: true)