#javascript #reactjs #firebase #google-cloud-firestore #promise
#javascript #reactjs #firebase #google-облако-firestore #обещание
Вопрос:
Я использую Firestore и React, и у меня следующая ситуация.
У меня есть 2 коллекции: заказы и пользователи.
В каждом заказе есть поле с именем userId, и на его основе я должен получить информацию о пользователе, которая находится внутри коллекции пользователей.
Как я видел, у меня есть 2 обещания: одно для получения заказов, а затем использовать цикл for, получить идентификатор пользователя и снова получить информацию о пользователе.
Итак, я должен объединить 2 объекта.
Внутри объекта order мне также нужны данные пользователя
Я пробовал это, но это не работает.
useEffect(() => {
firestore()
.collection(`orders`)
.get()
.then(result => {
let data = result.docs.map(function(p) {
return firestore()
.collection(`users`)
.doc(p.data().orderId)
.get()
.then(function(user) {
return {id: user.id, user.data()};
});
});
Promise.all(data).then(function(values) {
console.log(values);
});
});
}, []);
Ответ №1:
У нас нет никакой информации о том, почему это не работает… есть ли какая-либо ошибка или она просто ничего не показывает.
В любом случае, я создал ту же структуру в своем тестовом Firestore и использовал ваш код (все, что находится внутри useEffect) напрямую в nodejs и обнаружил только одну ошибку. В последнем возврате есть SyntaxError: Unexpected token .
.
Я исправил его на:
return {id: user.id, data: user.data()};
И теперь код возвращает значения в журнале консоли. Это может быть причиной.