Await返回一个对象,但是在获取值时未定义

时间:2020-06-18 09:39:28

标签: javascript react-native asynchronous

我正在尝试从我的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

screenshot

我花了几个小时在代码和stackoverflow上,却找不到答案。希望你能。

3 个答案:

答案 0 :(得分:2)

您没有使用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;
    };

答案 1 :(得分:0)

是否不返回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

答案 2 :(得分:0)

如果ref记录如下:

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

我怀疑这可能是因为您得到一个json字符串作为响应,除非您的开发环境默认情况下引用了键。

也许尝试let ref = JSON.parse(await database.ref ('games/' + key).once('value'));