Я пользуюсь реагирующим, экспо и пожарным магазином. У меня есть столы
продукты
предметы
- id
- productId
- expirationDate
Я хочу получить всепродукты и количество предметов, которые продукт имеет.Код:
export const getProducts = (callback) => {
const db = firebase.firestore();
let products = [];
db.collection('products').get().then((productsSnapshot) => {
productsSnapshot.forEach((_product, index, array) => {
let product = _product.data()
product.id = _product.id;
getItems(product._id, (items, error) => {
product.count = items.length;
products.push(product);
});
});
callback(products, null);
...
export const getItems = (productId, callback) => {
const db = firebase.firestore();
let items = [];
db.collection('items').where('productId', '==', productId).get()
.then((itemsSnapshot) => {
itemsSnapshot.forEach((_item) => {
let item = _item.data();
item.id = _item.id;
items.push(item);
});
callback(items, null);
...
У меня проблема в том, что обратный вызов на getItems запускается после, и .count никогда не получает значение.
Я пробовал async await, но я не мог понять, как его использовать, и выдавал ошибки при использовании firestore.Является ли использование обратных вызовов плохой идеей?Как это должно быть сделано?