# #javascript #firebase #google-cloud-firestore #async-await
Вопрос:
Я пытаюсь прочитать документ из firestore, используя идентификатор документов, и я не хочу использовать синтаксис .then() в документации firebase. Я хочу подать в суд на Async await, но получаю сообщение об ошибке «Не удается прочитать данные свойства неопределенного». Ниже приведен мой код
export const getOneJobById = async jobId => {
try {
const snapShot = await db.collection('jobs').doc(jobId).get();
return snapShot.doc.data();
} catch (error) {
console.log(error.message);
}
};
Помоги мне понять, в чем я ошибаюсь
Комментарии:
1. Привет, Дижифлекс, ты смог попробовать мой ответ? Если это было полезно и работает по назначению, вы можете принять (✔) и проголосовать (🔼) за это 🙂
2. Здравствуйте, @Dharmaraj Я увидел ваш ответ сразу после того, как вы его опубликовали, и он сработал. Затем я нажал «Принять», но StackOverflow уведомил меня, что я могу принять ответ только через 11 минут, и я забыл вернуться и принять его позже. Спасибо за напоминание.
Ответ №1:
На снимке DocumentSnapshot нет никаких свойств doc
. Вам нужно использовать .data()
на snapShot
себе.
export const getOneJobById = async jobId => {
try {
const snapShot = await db.collection('jobs').doc(jobId).get();
return snapShot.data();
} catch (error) {
console.log(error.message);
}
};
Если вы извлекаете несколько документов, т. е. используете get()
метод в CollectionReference, который возвращает снимок запроса, вы получаете доступ .docs
к свойству моментального снимка запроса и используете data()
метод для каждого из них по отдельности, как показано ниже:
const querySnapshot= await db.collection('jobs').get();
console.log(querySnapshot.docs.map(d => d.data()))