Flutter Firebase Как получить случайный документ - PullRequest
1 голос
/ 07 августа 2020

Я пытаюсь получить случайные сообщения от Firebase. Но я не могу получить случайный идентификатор документа.

Есть ли способ получить данные из Firebase следующим образом: -

  getRandomData() async {
QuerySnapshot snapshot = await posts
    .document(random.id)
    .collection('userPosts')
    .getDocuments();}

i am trying to say that. Now i am able to get documentID normally not in italics.so now how can i get random documentID from Firebase.

введите описание изображения здесь

Ответы [ 3 ]

1 голос
/ 07 августа 2020

Сначала вы можете получить все документы в вашей коллекции.

Попробуйте этот код:

async getMarker() {
    const snapshot = await firebase.firestore().collection('userPosts').get()
    const documents = [];
    snapshot.forEach(doc => {
       documents[doc.id] = doc.data();
    });
    return documents;

Затем из возвращаемых документов вы можете создать список идентификаторов документов и получить случайное число (идентификатор документа ) из этого списка.

1 голос
/ 07 августа 2020

Список documentIds в списке первым.

var list = ['documentId1','documentId2','documentId3'];

var element = getRandomElement(list);

Затем запросите documentSnapshot

0 голосов
/ 07 августа 2020

Основная проблема, которая помешает вам двигаться вперед, заключается в том, что на самом деле у вас нет никаких документов, вложенных непосредственно в «сообщения». Обратите внимание, что названия документов выделены курсивом. Это означает, что на самом деле здесь вообще нет документа. Однако причина, по которой они отображаются, заключается в том, что у вас есть подколлекция «userPosts», вложенная в путь, по которому существует этот идентификатор документа.

Поскольку у вас вообще нет документов в разделе «сообщения», обычные стратегии найти случайный документ вообще не работают. Вам нужно будет фактически заполнить там некоторые данные для выбора или найти другой способ выбора из данных в подколлекциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...