Как сохранить снимок Firebase в переменной для использования в другом месте? - PullRequest
0 голосов
/ 26 января 2020

Возможно ли это вообще?

Я видел, что этот вопрос довольно часто поднимается здесь, но не похоже, чтобы кому-то дали вполне тот ответ, который я ищу. Предположим, у вас есть следующий код, который должен получить объект Firebase из вашей базы данных и вернуть значение:

function get(target){
    return database.ref(target).once("value",function(snapshot){
        //console.log(snapshot.val());
        return snapshot.val();
    });
}

В моем случае ожидается возвращение объекта, а именно {"hello":"world"}. Тем не менее, мой результат всегда Promise {<pending>}. Я немного повозился с этим, и единственные другие результаты, которые я собирался получить, это undefined и Promise {<resolved> {"hello":"world"}}. Последнее было почти тем, что я хотел, но все же не совсем.

Как настроить функцию get() так, чтобы она возвращала фактическое значение snapshot.val(), а не обещание. Например:

let response = get("/foo");
console.log(response["hello"]);

Результат должен быть world.

1 Ответ

0 голосов
/ 26 января 2020

Вам нужно вернуть Promise, чтобы иметь возможность использовать объект в другом месте:

function get(target){
    return Promise((resolve, reject) =>{
database.ref(target).once("value",function(snapshot){
        //console.log(snapshot.val());
        resolve(snapshot.val());
     });
    });
}

Затем, когда вы вызываете эту функцию, вы можете сделать следующее:

get(target).then((data) =>{
  console.log(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...