firebase - Firestore - 意外读取
问题描述
伙计们,我确实有一个有趣的问题,如果你们中的任何一个能够帮助我,我会非常高兴。
我的应用流程是什么:
- 使用电子邮件、密码和其他一些详细信息注册:
- 用户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);
});
}
}
如果你们中的一些人知道,您能否向我解释一下我需要在哪里/如何搜索才能找到这个错误?因为你怎么能看到我没有使用任何读过的东西。
解决方案
鉴于我们不了解访问您数据库的所有可能路径,因此无法确定,但您应该知道,使用 Firebase 控制台会导致读取。如果您在写活动繁忙的集合/文档上保持控制台打开,控制台将自动读取更新控制台显示的更改。这通常是意外读取的来源。
如果没有您正在采取的所有步骤的完整复制步骤,就无法确定。
Firebase 目前不提供工具来跟踪文档读取的来源。如果您需要测量应用程序的特定读取,您将不得不以某种方式自行跟踪。
推荐阅读
- java - 在java中读取txt文件,程序跳过第一行
- python - python bluetooth.BluetoothSocket 连接无路由/设备或资源繁忙
- powershell - .net 替代 Start-Process
- node.js - 如何使用 Kerberos 客户端身份验证与 NodeJS 和 Axios 进行 api 调用
- flutter - Flutter Center 将小部件对齐到特定坐标
- javascript - 如何播放 RAW 音频文件?
- excel - 过滤值之和为零
- javascript - 如何以秒为单位(在 js 程序中)查找 webm(opus)音频文件的持续时间?
- api - REST API 替代“docker trust inspect”
- r - 如何对删除行功能进行故障排除