firebase 当我使用return时,我得到“未定义”;

zbwhf8kr  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(140)

我得到了一个快照值,如果我使用consoleiderlog,它会工作,但当我返回该值时,我得到的是“未定义”。
我尝试更改变量和返回值,并使用await和async

async function GetElements(element, place) {
firebase.database().ref().child(place).orderByChild("uid").equalTo(element).once('value', (snapshot) => {
    snapshot.forEach(function(childSnapshot) {
      Holder = childSnapshot.val();
    });
  }, (errorObject) => {
    console.log("User does not exist");
    document.cookie = "uid=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT";
    window.location.replace("login.html");
  });
  return Holder;
}
async function Test() {
  var bob = await GetElements("POkHi19eyZTfdeYECVpZByeVv2R2", "users/");
  console.log(bob)
}
Test()
bxjv4tth

bxjv4tth1#

你可以试试这个:

async function GetElements(element,place) {
  firebase.database().ref().child(place).orderByChild("uid").equalTo(element).once('value', (snapshot) => {

    snapshot.forEach(function(childSnapshot) {
            
      Holder = childSnapshot.val();
      
    });

    return Holder;
  }, (errorObject) => {
    console.log("User does not exist");
    document.cookie = "uid=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT";
    window.location.replace("login.html");
  });
}

这样,return语句将仅在回调函数被调用并且"Holder"被设置为正确值之后执行。

相关问题