Можно ли сделать снимок автоматически сгенерированного идентификационного документа из FireStore?

#javascript #firebase #vue.js #google-cloud-firestore

#javascript #firebase #vue.js #google-cloud-firestore

Вопрос:

В настоящее время я работаю над мобильным приложением и веб-приложением, используя один firestore для моего проекта последнего года (относительно нового для Firestore).

Когда клиент регистрируется в приложении из мобильного приложения, данные сохраняются в коллекции «пользователи», сгенерированный уникальный идентификатор для представления каждого уникального клиента [Документ], а затем вложенная коллекция «профиль» и «заказы», в которых хранятся их данные.

Текущая настройка Firestore после успешной регистрации клиента: Текущая настройка Firestore после успешной регистрации клиента

Прямо сейчас я пытаюсь отобразить вложенную коллекцию «Profile» в моем веб-приложении. Мне успешно удалось это сделать, но я ограничен одним пользователем.

 created() {
        db.collection('users/FbkKmQMaGYY2gErEneImmjUMvRt1/profile').onSnapshot((snapshotChange) => {
            this.Users = [];
            snapshotChange.forEach((doc) => {
                this.Users.push({
                    key: doc.id,
                    fname: doc.data().fname,
                    lname: doc.data().lname,
                    username: doc.data().username,
                    mail: doc.data().mail,
                    phone: doc.data().phone,
                    adress: doc.data().adress,
                    img: doc.data().img,
                })
            });
        })
    },
  

Мой вопрос: есть ли какие-либо методы, которые я могу использовать для вызова ВСЕЙ вложенной коллекции «Profile» (как показано на рисунке выше), чтобы я мог отобразить их в своем веб-приложении для целей администрирования.

Спасибо за вашу помощь! 🙂

Комментарии:

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

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

3. Не могли бы вы отредактировать вопрос, чтобы уточнить, что вы пытаетесь сделать? В нижней части вопроса есть ссылка для редактирования.

4. Для дальнейшего использования, то, что вы пытаетесь сделать, это » запросить все документы в вложенной коллекции». Но, чтобы быть ясным, вы пытаетесь запросить только эту одну вложенную коллекцию или все вложенные коллекции с одинаковым именем в любом месте базы данных?

Ответ №1:

Если вы хотите показать все профили для всех пользователей, вы можете использовать запрос группы сбора:

 db.collectionGroup('profile').onSnapshot((snapshotChange) => {
  

Остальная часть вашего кода может остаться прежней.

Теперь будут получены все документы из всех названных коллекций profile .

Обратите внимание, что невозможно получить только profile коллекции /users , поэтому вам нужно убедиться, что имена ваших коллекций достаточно уникальны / специфичны.

Комментарии:

1. Теперь он работает так, как я и предполагал! С этим последним объяснением у меня есть приблизительное представление о том, как теперь работает Firestore, прими мою огромную благодарность за быстрый ответ!