# #javascript #reactjs #firebase #google-cloud-firestore
Вопрос:
моя база данных firestore выглядит так:
группы ( коллекция ) => группа с определенным идентификатором ( doc ) =>> викторины (вложенная коллекция)
Все, что я хочу сделать, это написать запрос в js, который возвращает массив всех тестов из группы с заданным идентификатором
Код, который я написал, выглядит так:
export const fetchQuizzesFirebase = async function (idGroup) {
if (!idGroup) return [];
const quizzes = await firestore
.collection(`groups`)
.doc(idGroup)
.collection(`quizzes`)
.get();
return quizzes.filter(doc => doc.exists).map(doc => ({ id: doc.id, ...doc.data() }));
}
Но это не работает, и я, кажется, не могу это исправить. Что я упускаю?
Ответ №1:
Ваш запрос кажется правильным, но вы должны использовать карту в .docs
свойстве вместо QuerySnapshot. Я также удостоверюсь, существует ли этот идентификатор группы console.log(idGroup)
, а также .filter()
является ли он избыточным. Вы получили снимок запроса и все имеющиеся в нем документы.
console.log(`${quizzes.size} quizzes found`) // Check quiz count
return quizzes.docs.map(doc => ({ id: doc.id, ...doc.data() }));
^^^^
Достаточно использовать map
только a.
Комментарии:
1. Спасибо за помощь, я изменил то, как вы сказали , я зарегистрировал идентификатор , и, кажется, все в порядке, но я получаю эту ошибку
Unhandled Rejection (TypeError): quizzes.map is not a function
, есть идеи, почему?