React Promise Вернуться Firebase Array - PullRequest
0 голосов
/ 05 декабря 2018

Мне очень трудно решить эту проблему, которую я сейчас испытываю.Видите ли, я использую Firebase в качестве базы данных для хранения и извлечения данных.

Сейчас я хочу иметь возможность возвращать массив, который создается внутри вызова Firebase .once, но у меня есть некоторыетрудности.Это мой код:

Вызов функции (функция возврата):

<p>{this.fetchStartingPrice(singleProduct.id)}</p>

Здесь я хочу отобразить конкретное значение, которое я пытаюсь получить ниже:

fetchStartingPrice(category){
        let promises = [];

        promises.push(this.fetchPrices(category));

        Promise.all(promises).then(result => {
            console.log(result);
        })
    }

Я только что использовал console.log, чтобы попытаться устранить ошибки.

fetchPrices(category){
        var allPrices = [];
         allProductsFirebase.child(category).once('value', (snapshot) => {
            snapshot.forEach((childSnapshot) => {
                if(childSnapshot.key == category){
                    allPrices.append(childSnapshot.val().brand);
                }
            });
            return allPrices;
        })
    }

Итак, в основном, я хочу пройтись по allProductsFirebase, пытаясь сначала определитьбренд продукта, и если он совпадает с брендом, который использовался в качестве параметра в fetchStartingPrice() и fetchPrises (), я хочу сохранить конкретную цену этого продукта в массиве цифр (цен).После того как я просмотрел весь снимок, я хочу вернуть полный массив, содержащий только цены на товары, а затем через fetchStartingPrice() я хочу использовать Math.min(promises), чтобы получить самое низкое число в этом массиве.Тем не менее, мне действительно тяжело это делать.Может ли кто-нибудь помочь мне с этим?

Я хочу иметь возможность, после всего этого, вернуть значение в fetchStartingPrice().

1 Ответ

0 голосов
/ 05 декабря 2018

fetchPrices() должен вернуть Promise или быть Promise.вы ничего не возвращаете из fetchPrices() (вы возвращаете allPrices в области действия .once()).попытаться вернуть результат (если он возвращает Promise), который возвращает .once().

fetchPrices(category){
    var allPrices = [];
     return allProductsFirebase.child(category).once('value', (snapshot) => {
        snapshot.forEach((childSnapshot) => {
            if(childSnapshot.key == category){
                allPrices.append(childSnapshot.val().brand);
            }
        });
        return allPrices;
    })

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...