Await возвращает объект, но при получении значений они не определены - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь получить значение из своей базы данных firebase и использую следующий код:

export const getCode = async key => {
  let ref = await database.ref ('games/' + key).once('value');
  console.log(ref);
  console.log(ref.code);
  return ref;
};

Результаты, которые я получаю из каждого console.log, следующие:

ref возвращает

Object {
  "code": 665195,
  "users": Object {
    "-MA5m0PrOWUuz-KdcmRx": Object {
      "username": "לעג",
    },
  },
}

, но ref.code возвращает undefined

скриншот

Я потратил часы на свой код и stackoverflow и не нашел ответа. Надеюсь, ты смог.

Ответы [ 3 ]

2 голосов
/ 18 июня 2020

вы не использовали ref.val () для получения значений.

попробуйте

export const getCode = async key => {
      let ref = await database.ref('games/' + key).once('value');
      const data = ref.val();
      console.log(data);
      console.log(data.code);
      return data.code;
    };
0 голосов
/ 18 июня 2020

Если ref регистрируется следующим образом:

Object {
  "code": 665195,
  "users": Object {
    "-MA5m0PrOWUuz-KdcmRx": Object {
      "username": "לעג",
    },
  },
}

Я подозреваю, что, возможно, вы получаете строку json в качестве ответа, если ваша среда разработки не цитирует ключи по умолчанию .

Может попробовать let ref = JSON.parse(await database.ref ('games/' + key).once('value'));

0 голосов
/ 18 июня 2020

Не следует ли возвращать переменную ref? Вы не объявили ничего с именем code, поэтому оно не определено.

export const getCode = async key => {
  let ref = await database.ref ('games/' + key).once('value');
  return ref.code;
};

Вы также можете сделать эту единственную строчку, если собираетесь использовать ее как есть.

export const getCode = async key => await database.ref ('games/' + key).once('value').code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...