我正在做一个更新功能,该功能将基于与已认证用户的uid绑定的文档uid来获取所需的文档。
在另一个函数中,我使用可以正常工作的相同方法从集合中获取数据,但是在将uid作为变量存储的函数中,它返回了我作为[object object]。
>这是用来检索我当前用户数据的函数
this.user$ = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
return this.afs.doc<any>(`users/${user.uid}`).valueChanges();
} else {
return null;
}
})
);
这将通过简单地致电例如获取我需要的字段user.username
但是,当尝试这样存储文档uid时
this.userID = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
this.userID = user.uid;
} else {
return null;
}
})
);
我的userID的值将只是[对象对象]
称为
updateUser(user: User) {
this.userDoc = this.afs.doc(`users/${this.userID}`);
this.userDoc.update(user);
}
返回... / documents / users / [object Object]的未定义文档路径
然后我将如何跟踪文档ID以使更新生效?
答案 0 :(得分:0)
更改此:
this.userID = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
this.userID = user.uid;
} else {
return null;
}
})
);
对此:
this.userID = this.afAuth.authState.pipe(
switchMap(user => {
if (user) {
this.userIDs= user.uid;
} else {
return null;
}
})
);
您需要使用其他变量(this.userIDs)名称来存储user.uid
答案 1 :(得分:-1)
问题在于,您正在存储同时为final_data = [1, 2, 3, 4, 0, 0 ,0, 0]
和this.userID
的预订分配值。删除分配:this.userID
,现在它将正确存储!而是将订阅存储在另一个变量中,然后可以在需要时取消订阅该变量:
this.userID = this.afAuth.authState