Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Firebase时,Firebase.auth()currentUser为空值,即使正在记录该值_Javascript_Angular_Typescript_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Javascript 使用Firebase时,Firebase.auth()currentUser为空值,即使正在记录该值

Javascript 使用Firebase时,Firebase.auth()currentUser为空值,即使正在记录该值,javascript,angular,typescript,firebase-realtime-database,firebase-authentication,Javascript,Angular,Typescript,Firebase Realtime Database,Firebase Authentication,我在service.TS文件中创建了一个查询,该文件显示基于登录用户UID的项“状态”: getLists(): FirebaseListObservable<any> { firebase.auth().onAuthStateChanged(function(user) { if (user) {console.log("blah", firebase.auth().currentUser.uid) // User is signed in. } }); re

我在service.TS文件中创建了一个查询,该文件显示基于登录用户UID的项“状态”:

getLists(): FirebaseListObservable<any> {

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {console.log("blah", firebase.auth().currentUser.uid)
    // User is signed in.
  }
});
  return this.db.list('/foods', {
    query: {
      orderByChild: 'state/'+firebase.auth().currentUser.uid+'/state',
      equalTo: 'listed'
    }
  });
}
我需要做什么才能正确地将UID传递给查询?

是异步的,因此当用户的回调中有用户
UID
时,只需执行以下操作:

getLists(): FirebaseListObservable<any> {

    var self = this;

    firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
            // User is signed in.
            var userID = user.uid;

            return self.db.list('/foods', {
                query: {
                    orderByChild: 'state/' + userID + '/state',
                    equalTo: 'listed'
                }
            });
        }
    });

}
getList():FirebaseListObservable{
var self=这个;
firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
//用户已登录。
var userID=user.uid;
返回self.db.list(“/foods”{
查询:{
orderByChild:'state/'+userID+'/state',
equalTo:“上市”
}
});
}
});
}
是异步的,因此当用户的回调中有用户
uid
时,只执行以下操作:

getLists(): FirebaseListObservable<any> {

    var self = this;

    firebase.auth().onAuthStateChanged(function(user) {
        if (user) {
            // User is signed in.
            var userID = user.uid;

            return self.db.list('/foods', {
                query: {
                    orderByChild: 'state/' + userID + '/state',
                    equalTo: 'listed'
                }
            });
        }
    });

}
getList():FirebaseListObservable{
var self=这个;
firebase.auth().onAuthStateChanged(函数(用户){
如果(用户){
//用户已登录。
var userID=user.uid;
返回self.db.list(“/foods”{
查询:{
orderByChild:'state/'+userID+'/state',
equalTo:“上市”
}
});
}
});
}

这给了我一个错误:声明类型既不是“void”也不是“any”的函数必须返回值。我也得到了错误:TypeError:undefined不是一个对象(评估'this.db.list')和Uncaught(承诺中):TypeError:undefined不是一个对象(评估'this.moviesSvc.getLists().subscribe')。@cfoster5更新了代码,回调中的'this'会有所不同,因此,将其缓存为self并使用它..尝试此操作仍然会出现上面列出的错误。这给了我一个错误显示:声明类型既不是“void”也不是“any”的函数必须返回值。我也得到了错误:TypeError:undefined不是一个对象(评估'this.db.list')和Uncaught(承诺中):TypeError:undefined不是一个对象(评估'this.moviesSvc.getLists().subscribe')。@cfoster5更新了代码,回调中的'this'会有所不同,所以将其缓存为self并使用它..尝试此操作仍然会出现上面列出的错误。