Это происходит потому, что при использовании следующей строки кода:
mStoreBaseRef.collection("Polls").add(pollMap).addOnCompleteListener(/* ... */)
Вы пишете коллекцию pollMap
внутри Polls
, что является правильным.Затем в методе onComplete()
вы используете следующую строку кода:
String key = docRef.getId();
, которая будет возвращать точный идентификатор, который был сгенерирован, когда вы написали выше pollMap
в базу данных.Таким образом, передача этого ключа в качестве аргумента методу document()
внутри следующей строки кода:
CollectionReference pollAnswerRef = mStoreBaseRef.collection("Polls").document(key).collection("answers");
Означает, что вы переопределяете все данные в следующем местоположении:
Firestore-root
|
--- Pools (collection)
|
--- d7kjSLqvM1qyS5t07Jxx (document)
Таким образом, все в этом месте будет удалено, и новые данные будут добавлены.Это происходит в случае Map
, оно заменяет старое значение новым.Как видно из вашего первого снимка экрана, под этим местоположением не осталось ничего, кроме новой коллекции answers
, которая была только что добавлена.Чтобы решить эту проблему, вам нужно использовать метод update()
вместо метода set()
.
Что касается второй записи, вы добавляете тот же pollMap
, но на этот раз в коллекцию Trending
и какна втором снимке экрана все работает нормально, потому что вы не используете другие операции записи по той же ссылке , но , используя снова следующую строку кода:
String key = docRef.getId();
Создается новый идентификатори используя его в следующей строке кода:
CollectionReference pollAnswerRef = mStoreBaseRef.collection("Polls").document(key).collection("answers");
В результате будут созданы новые данные по той же ссылке, что и при первой записи.Видите ли, вы используете ту же коллекцию Polls
?Это, скорее всего, причина, по которой у вас больше документов в первой коллекции, чем во второй.
Что касается одного и того же идентификатора, я несколько раз тестировал тот же код, что и ваш, или метод document()
безпередавая любые аргументы и каждый раз генерируются разные идентификаторы.Я думаю, что вы каким-то образом вручную создали операцию записи с этим идентификатором.
В заключение, установите правильные ссылки в вашем коде, удалите данные, которые у вас уже есть в вашей базе данных, и добавьте свежие, это должно решить вашу проблему.проблема.