【发布时间】:2020-11-10 06:56:52
【问题描述】:
伙计们,我确实有一个有趣的问题,如果你们中的任何人能够帮助我解决这个问题,我将非常高兴。
我的应用流程是什么:
- 使用邮箱、密码和其他一些详细信息注册:
- 用户 firebase 以验证用户身份并通过电子邮件和密码创建帐户,同时我将用户的自定义数据写入数据库。
- 用户登录。
就是这样,这就是我所有的基本逻辑,你怎么能看到我没有从数据库中读取任何数据。
现在...问题是,由于某些奇怪的原因,当我注册我的用户时,我要去 firebase 控制台查看我的数据库的使用情况,我会看到类似...对于一个用户已创建我将有 1 次写入(这很好,正如我预期的那样),但也有 13-20 READS FROM DB。
现在这是我的问题,为什么在我只进行身份验证和写入时,我在 firestorm 上读取?
这是我现在正在使用的数据库代码。
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);
});
}
}
如果你们中的一些人知道,能否向我解释一下我需要在哪里/如何搜索才能找到这个错误?因为你怎么能看到我没有使用任何 read what so ever.
【问题讨论】:
-
你有什么安全规则吗?
-
是的,我愿意
service cloud.firestore { match /databases/{database}/documents { match /{document=**} { // allow read, write: if false; allow read, write; } } } -
我相信安全规则会导致读取,但这不太可能发生在这里。执行此操作时是否打开了 Firestore 控制台?因为在那里看到文档算作阅读。
-
是的,但我只在 Database->Usage 上有它,这并不是真正的原因。我的意思是我已经无数次地重新启动了页面并且它没有发生任何事情。在我从应用程序写入用户之后,我看到读取次数不断增加。
标签: firebase flutter dart firebase-authentication google-cloud-firestore