订阅 FirebaseListObservable - 属性 $key 在类型 any[] 上不存在
Subscribing to FirebaseListObservable - property $key does not exist on type any[]
我的数据结构是:
users
KEYnjkhkugl
uid: JHKJGHKJUYKJAHN
KEYkjbjhnjs
uid: UKHUFJGHGBHKTDD
现在我需要获取一个 $key,当我只知道 uid
时由 Firebase 生成。所以我这样做:
getUserKeyFromUid(uid:string) : string {
let userKey;
const user$ = this.afDb.list('users', {
query: {
orderByChild: 'uid',
equalTo: uid
}
})
.do(console.log);
user$.subscribe(obj => userKey = obj.$key);
return userKey;
}
我认为它运行良好,但我不明白为什么如果我删除 .do(console.log);
我在 $key
下会出现编译错误
Property $key does not exist on type any[]
你订阅的方式不对。但要回答您的问题,请像这样使用 firebase sdk:
getUserKeyFromUid(uid:string) : Observable<string> {
return this.afDb.object('users/' + uid)
.do(console.log);
}
不能用subscribe填充变量,因为subscribe中的函数叫async。你这样做的方式如下:
1.让用户密钥; // 用户密钥未定义
2. const user$ = ... // 无效
3. 用户$.订阅(...); // 开始调用 firebase
4. return 用户密钥; // return未定义
5. obj => userKey = obj.$key // 现在,userKey 将被分配密钥,但已经晚了
所以在调用函数的地方订阅可观察对象:
... {
const userKey$ = getUserKeyFromUid(uid);
userKey$.subscribe();
}
我的数据结构是:
users
KEYnjkhkugl
uid: JHKJGHKJUYKJAHN
KEYkjbjhnjs
uid: UKHUFJGHGBHKTDD
现在我需要获取一个 $key,当我只知道 uid
时由 Firebase 生成。所以我这样做:
getUserKeyFromUid(uid:string) : string {
let userKey;
const user$ = this.afDb.list('users', {
query: {
orderByChild: 'uid',
equalTo: uid
}
})
.do(console.log);
user$.subscribe(obj => userKey = obj.$key);
return userKey;
}
我认为它运行良好,但我不明白为什么如果我删除 .do(console.log);
我在 $key
下会出现编译错误
Property $key does not exist on type any[]
你订阅的方式不对。但要回答您的问题,请像这样使用 firebase sdk:
getUserKeyFromUid(uid:string) : Observable<string> {
return this.afDb.object('users/' + uid)
.do(console.log);
}
不能用subscribe填充变量,因为subscribe中的函数叫async。你这样做的方式如下:
1.让用户密钥; // 用户密钥未定义
2. const user$ = ... // 无效
3. 用户$.订阅(...); // 开始调用 firebase
4. return 用户密钥; // return未定义
5. obj => userKey = obj.$key // 现在,userKey 将被分配密钥,但已经晚了
所以在调用函数的地方订阅可观察对象:
... {
const userKey$ = getUserKeyFromUid(uid);
userKey$.subscribe();
}