Я пытаюсь воссоздать подписчик Instagram и следующие функции, но, похоже, в логике есть ошибка. Там нет ошибки в коде. Что я делаю сейчас, когда нажата кнопка «подписаться», - это создать коллекцию под названием «подписка пользователя», добавить «текущий UID» в качестве «идентификатора документа» и затем сохранить следующие данные целевых пользователей как [targetuid: 1]. В то же время я создаю коллекцию под названием «пользователь-подписчики», добавляю «UID целевого объекта» в качестве «идентификатора документа», а затем сохраняю данные подписчиков как [currentuid: 1]. Проблема здесь в том, что это работает, когда дело доходит до следования только одному пользователю. Когда я пытаюсь следовать за другим, существующие пользовательские данные перезаписываются новым пользователем, за которым я только что следовал, вместо добавления данных.
Пример: предположим, что currentUser - A, user1 = B, user2 = C
Когда я следую за user1 и user2, моя база данных в firestore должна быть отражена как:
user-following -> A -> [B:1,C:1]
user-followers -> B -> [A:1]
user-followers -> C -> [A:1]
Выше приведен перевод в коллекцию -> documentID -> dictionaryvalues
Проблема в том, что я не получаю вышеуказанный результат. Вместо этого, когда я следую за user2, значение user1 переопределяется. Таким образом, хранится только одно значение словаря.
Я знаю, что проблема заключается в том, как я пытаюсь создать поле под идентификатором документа. Я знаю, что могу создать словарь и добавить значения, но я думаю, что это много кода для простого решения.
func follow(){
guard let currentUid = Auth.auth().currentUser?.uid else
{return}
guard let uid = uid else {return}
self.isFollowed = true
// Add followed user to current user-following structure
Firestore.firestore().collection("user-
following").document(currentUid).setData([uid:1])
// Add current user to followed user-follower structure
Firestore.firestore().collection("user-
followers").document(uid).setData([currentUid:1])
}