Проблема с логикой, когда дело доходит до хранения значений словаря в firestore - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь воссоздать подписчик 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])
        }

1 Ответ

0 голосов
/ 09 июля 2019

Неважно. Понял, что мне пришлось использовать слияние.

Firestore.firestore().collection("user- 
         following").document(currentUid).setData([uid:1], merge: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...