Firebase Firestore-意外读取
伙计们,我这里确实有一个有趣的问题,如果你们中的任何人能帮我解决这个问题,我将非常高兴 我的应用程序流程是什么:Firebase Firestore-意外读取,firebase,flutter,dart,firebase-authentication,google-cloud-firestore,Firebase,Flutter,Dart,Firebase Authentication,Google Cloud Firestore,伙计们,我这里确实有一个有趣的问题,如果你们中的任何人能帮我解决这个问题,我将非常高兴 我的应用程序流程是什么: 使用电子邮件、密码和其他一些详细信息进行注册: 用户firebase,以便对用户进行身份验证,并通过电子邮件和密码创建帐户,同时我将用户的自定义数据写入数据库 登录用户 就这样,这就是我的基本逻辑,你可以看到,就我所知,我没有从数据库中读取任何数据 现在。。。问题是,出于某种奇怪的原因,当我注册我的用户时,我会去firebase控制台查看我的DB的使用情况,我会看到类似于。。。对于创
class DatabaseFirebase implements BaseDataBase {
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
final FirebaseStorage _storage = FirebaseStorage.instance;
FirebaseUser _firebaseUser;
Firestore _firestore = Firestore.instance;
@override
Future<String> login(String email, String password) async {
_firebaseUser = await _firebaseAuth.signInWithEmailAndPassword(
email: email, password: password);
return _firebaseUser.uid;
}
@override
Future<String> register(String email, String password) async {
_firebaseUser = await _firebaseAuth.createUserWithEmailAndPassword(
email: email, password: password);
return _firebaseUser.uid;
}
@override
Future<UserData> getCurrentUser() async {
if (_firebaseUser == null)
_firebaseUser = await _firebaseAuth.currentUser();
UserData user = UserData();
user.email = _firebaseUser?.email;
user.name = _firebaseUser?.displayName;
return user;
}
@override
Future<void> logout() async {
_firebaseAuth.signOut();
}
@override
Future<void> onAuthStateChanged(void Function(FirebaseUser) callback) async {
_firebaseAuth.onAuthStateChanged.listen(callback);
}
@override
Future<void> writeUser(UserData user) async {
_firestore.collection("Users").add(user.toMap()).catchError((error) {
print(error);
});
}
}
类DatabaseFirebase实现BaseDataBase{
final FirebaseAuth _FirebaseAuth=FirebaseAuth.instance;
最终FirebaseStorage _storage=FirebaseStorage.instance;
FirebaseUser\u FirebaseUser;
Firestore _Firestore=Firestore.instance;
@凌驾
未来登录(字符串电子邮件、字符串密码)异步{
_firebaseUser=等待_firebaseAuth.Signin,使用Email和Password(
电子邮件:电子邮件,密码:密码);
返回firebaseUser.uid;
}
@凌驾
未来注册(字符串电子邮件、字符串密码)异步{
_firebaseUser=Wait_firebaseAuth.createUserWithEmailAndPassword(
电子邮件:电子邮件,密码:密码);
返回firebaseUser.uid;
}
@凌驾
未来getCurrentUser()异步{
如果(_firebaseUser==null)
_firebaseUser=wait_firebaseAuth.currentUser();
UserData user=UserData();
user.email=\u firebaseUser?.email;
user.name=\u firebaseUser?.displayName;
返回用户;
}
@凌驾
将来注销()异步{
_firebaseAuth.signOut();
}
@凌驾
未来onAuthStateChanged(无效函数(FirebaseUser)回调)异步{
_firebaseAuth.onAuthStateChanged.listen(回调);
}
@凌驾
未来写入器(用户数据用户)异步{
_firestore.collection(“Users”).add(user.toMap()).catchError((error){
打印(错误);
});
}
}
如果你们中的一些人知道,你能解释一下我需要在哪里/如何搜索才能找到这个bug吗?因为您如何看到我没有使用任何read what so ever。鉴于我们不了解访问您数据库的所有可能路径,因此不可能确切知道,但您应该知道,使用Firebase控制台将导致读取。如果在写入活动繁忙的集合/文档上保持控制台打开,控制台将自动读取更新控制台显示的更改。这通常是意外读取的来源 如果没有完整的复制步骤,没有确切的步骤,就无法确定
Firebase目前不提供跟踪文档读取来源的工具。如果您需要测量应用程序中的特定读取,您必须自己进行跟踪。您有任何安全规则吗?是的,我有
service cloud.firestore{match/databases/{database}/documents{match/{document=**}{//allow read,write:If false;allow read,write;}}
我相信安全规则会导致读取,但这在这里不太可能发生。进行此操作时是否打开了Firestore控制台?因为在那里看到文档算是读取。是的,但我只是在数据库->使用中看到了它,这并不是真正的原因。我的意思是,我已经无数次地重新启动了这个页面,但什么都没有发生。在我从应用程序中编写用户之后,我看到读取的数量正在增加。感谢您的建议,保持Firebase控制台打开将导致读取。在我的代码中,我与Firebase的唯一交互是这样一行:await db.collection(collection.doc(id.set)(docData)代码>不知怎的,我的阅读计数达到了极限!关闭Firebase Cloud Firestore数据控制台后,读取计数停止增加。我在理解读取如何计算时遇到了相同的问题:。我的控制台有9次写入。我的阅读量在不到一小时的时间内就达到了53000,其中有一个集合,3个文档每个都有2个属性。我有同样无法解释的读取计数-我看不出我的设置是如何“忙碌的控制台”。在CloudFireStore文档中很难找到关于如何计算读取的清晰信息@drigofonte-你明白了吗?如果你在Firestore控制台打开时在Chrome中打开网络选项卡,你可以在后台看到请求。这些累积了大量的读取计数。我只是用一个集合一个文档访问控制台,并将其打开30秒,读取次数大约为9-12次。所以,是的,永远不要长时间访问控制台。