如何从函数中获取 return 的 firebase 数据?

How to get firebase data to return from a function?

我正在尝试从 firebase 实时数据库获取数据。我知道如何获取数据,我可以记录它,但它不是 returning。如果我在代码中的其他任何地方使用该函数将该数据设置为变量,它总是 return 未定义。


function getData(target) {
  const reference = ref(db, `${target}/`);
  onValue(reference, (snapshot) => {
    if (snapshot.exists()) {
      console.log(snapshot.val());
      return snapshot.val();
    }
  });
}

console.log(snapshot.val()); 作品

我尝试了很多解决方案,但无法让它按照我想要的方式工作。 基本上,我想从 firebase 获取数据并使其发挥作用,这样我就可以在我的其他文件中使用它,只需传递一个数据库引用即可。一切正常,除了它不是 return 那个值。

听起来你只想 read data once,你可以像这样用 get() 来做:

function getData(target) {
  const reference = ref(db, `${target}/`);
  return get(reference).then((snapshot) => {
    if (snapshot.exists()) {
      return snapshot.val();
    }
    // TODO: what do you want to return when the snapshot does *not* exist?
  });
}

或者用async/await

async function getData(target) {
  const reference = ref(db, `${target}/`);
  const snapshot = get(reference);
  if (snapshot.exists()) {
    return snapshot.val();
  }
  // TODO: what do you want to return when the snapshot does *not* exist?
}