#typescript #firebase #google-cloud-firestore
#typescript #firebase #google-облако-firestore
Вопрос:
Я запрашиваю коллекцию для определенного документа и пытаюсь получить идентификатор документа из результата моего запроса, который относится к типу FirebaseFirestore.QuerySnapshot.
Мой фактический запрос выглядит следующим образом (я использую async / await):
result = await db.collection("chatrooms").where("userA", "==", req.body.userA)
.where("userB", "==", req.body.userB).limit(1).get();
Я пытался с:
await result.docs.map(doc => {
return doc.id
})
Но это дает мне undefined
ответ.
Что я делаю не так?
Ответ №1:
QuerySnapshot содержит ноль или более объектов DocumentSnapshot, представляющих результаты запроса. К документам можно получить доступ в виде массива через свойство docs или перечислить с помощью метода forEach. Количество документов можно определить с помощью свойств empty и size.
Таким образом, он вернет массив (QuerySnapshot) из QueryDocumentSnapshot
s. Вам нужно перебрать снимки с помощью forEach(), тогда вы сможете получить идентификатор документа из каждого QueryDocumentSnapshot
https://firebase.google.com/docs/reference/js/firebase.firestore.QueryDocumentSnapshot
Если вы используете typescript, вы должны иметь возможность видеть определения, методы и свойства в вашей IDE.
Комментарии:
1. в VSCode, даже если вы пишете на JS, вы все равно можете увидеть определения TS, если наведете курсор на код Firebase.
2. Я использовал forEach () в своем коде, но все равно получил undefined. как я могу получить возвращаемое значение из async и использовать его в другой функции, которую необходимо запустить после асинхронности?