Javascript 使用Firebase时,Firebase.auth()currentUser为空值,即使正在记录该值
我在service.TS文件中创建了一个查询,该文件显示基于登录用户UID的项“状态”: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
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并使用它..尝试此操作仍然会出现上面列出的错误。