#javascript #firebase #vue.js #google-cloud-firestore #nuxtjs
# #javascript #firebase #vue.js #google-облако-firestore #nuxtjs
Вопрос:
Я пытаюсь получить заголовок сообщения из firestore, но почему-то я не мог понять, как это можно сделать с помощью async await.
async getVideo(id) {
var self = this;
const ref = this.$fire.firestore
.collection("posts")
.where("ytid", "==", id)
.orderBy("createdAt", "desc");
try {
let post = await ref.get();
console.log(post.data());
} catch (e) {
console.log(e);
}
}
Я попытался консольный журнал post.data(), но он говорит, что post.data() не является функцией.
Любая помощь будет оценена.
Комментарии:
1. Что не так с тем, что у вас есть сейчас? Пожалуйста, отредактируйте вопрос, чтобы включить в него информацию об отладке.
Ответ №1:
Когда вы вызываете ref.get() , вы получите объект QuerySnapshot . Этот объект содержит ноль или более объектов DocumentSnapshot, которые содержат данные из результатов запроса. У QuerySnapshot нет вызываемого метода data()
. Вам придется перебирать документы, используя предоставленный API, чтобы получить снимки документов:
const qsnapshot = await ref.get();
qsnapshot.forEach(doc => {
const data = doc.data();
console.log(data);
})
Ответ №2:
post
будет создан снимок документов, для которых нет data()
метода.
Вам нужно будет выполнить итерацию по снимку, чтобы получить доступ к отдельным документам.
См. https://firebase.google.com/docs/firestore/query-data/get-data#get_multiple_documents_from_a_collection для получения краткого руководства или https://googleapis.dev/nodejs/firestore/latest/QuerySnapshot.html для получения полной ссылки на QuerySnapshot
тип.