我在尝试从已登录用户更新数据时遇到问题。我有uid,但uid和用户集合之间必须有连接,以便程序选择合适的用户进行更新,但我不知道该如何进行。
这是我所拥有的:
FirebaseUser loggedInUser;
final _firestore = Firestore.instance;
//
double _latitude;
double _longitude;
void getCurrentLocation() async {
try {
Position position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
setState(() {
_latitude = position.latitude;
_longitude = position.longitude;
});
_firestore
.collection('users')
.document('${loggedInUser.uid}')
.updateData({'location': GeoPoint(_latitude, _longitude)});
} catch (e) {
print(e);
}
}
这是我得到的:
E/flutter ( 9187): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(Error performing updateData, NOT_FOUND: No document to update: projects/app-#####/databases/(default)/documents/users/CGyByl58ELc0zirlVjJpv5OWAc42, null)
因此它使用的是正确的uid(“CGyByl58ELc0zirlVjJpv5OWAc42”)
这是Firebase的身份验证标签的屏幕截图:
但是我想要获取的是该用户在数据库中的集合的名称:
最佳答案
用户ID与文档ID不同,这就是为什么出现该错误的原因,因为userId
不存在任何文档。您需要使用userId
作为文档ID:
void addUser() async{
var firebaseUser = await FirebaseAuth.instance.currentUser();
Firestore.instance.collection("users").document(firebaseUser.uid).setData(
{
"age" : 38,
}).then((_){
print("success!");
});
}
现在,您将使用
userId
作为文档ID,并且可以使用userId
更新文档
关于firebase - 在Cloud Firestore中更新用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62244722/