#javascript #firebase #vue.js #google-cloud-firestore
#javascript #firebase #vue.js #google-cloud-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, прими мою огромную благодарность за быстрый ответ!