我已经花了几个小时试图了解如何更新Firestore数据收集,我几乎已经完成了,但是以下功能存在问题。这是Ionic 3,AngularFire2和Firestore应用程序的一部分,我正在尝试将用户配置文件中的照片上传到存储(Firebase),这部分工作正常。但是,当我尝试更新Firestore数据收集中的“Photo Url”时,我第一次调用该函数时不会这样做,这是在第二次请求时完成的。
这是功能:
saveToDatabase(uploadSnapshot) {
this.actuser = firebase.auth().currentUser.uid;
let userRef = this.afs.collection('usuarios').ref.where('uid', '==', this.actuser);
userRef.get().then((result) => {
result.forEach(doc => {
this.userId = doc.id
})
})
var uid = this.userId;
var actual = this.afs.collection('usuarios').doc(uid).update({ foto: uploadSnapshot.downloadURL});
return (uid);
}
正在发生的事情是,我第一次调用此函数时,永远不要进入userRef.get()
部分,所以我永远不会更新this.userId
。并获得消息错误功能:
CollectonReference.doc()要求其第一个参数为string类型,但未定义
这是正确的,因为它永远不会进入userRef.get()
。我在控制台上看到它在更新后得到了值:
var actual = this.afs.collection('usuarios').doc.(uid).update ...
任何人都可以告诉我在尝试更新集合之前我需要做些什么来获取this.userId?
希望有人理解我,提前感谢任何评论。