与 Flutter 中的 Provider 包相关,Firestore 是如何计算读取次数的?
How does Firestore count reads as it relates to the Provider package in Flutter?
当我打电话时:
final user = Provider.of<CustomUser?>(context);
My Provider 的下游,然后调用 user.email... 这算作 'Read' 吗?
为了进一步了解登录时的上下文,我调用 ('Read' 1?):
Future signIn(String email, String password) async {
await _authService.signInWithEmailAndPassword(
email: email, password: password);
print('Sign In');
User? user = _authService.currentUser;
然后我调用 ('Read' 2?):
CustomUser loggedInUser = CustomUser();
await FirebaseFirestore.instance
.collection("users")
.doc(user!.uid)
.get()
.then((value) {
loggedInUser = CustomUser.fromMap(value.data());
});
我在哪里将用户信息从我的 firestore 集合映射到我的 CustomUser 对象。然后我通过流提供程序传递 CustomUser(我想我将更改为 Change Notifier Provider,但这应该与这个问题无关......):
Widget build(BuildContext context) {
return StreamProvider<CustomUser?>.value(
value: AuthService().user,
initialData: null,
child: MaterialApp(
home: Home()
然后我在家里打电话:
final user = Provider.of<CustomUser?>(context);
并用 user.email、user.name 等填充一些文本小部件...这也算作阅读吗?换句话说,上述逻辑算作 2 次还是 3 次读取到 firebase?
每次您调用 get()
时,Firestore SDK 都必须连接到服务器,以至少检查是否有更新版本的文档。这是收费文档阅读。
我建议查看 onSnapshot
,它会在文档上保持活跃的侦听器,因此在创建侦听器时只需与服务器核对一次,然后只获取更新的文档(因此有更新时阅读收费文档。
当我打电话时:
final user = Provider.of<CustomUser?>(context);
My Provider 的下游,然后调用 user.email... 这算作 'Read' 吗?
为了进一步了解登录时的上下文,我调用 ('Read' 1?):
Future signIn(String email, String password) async {
await _authService.signInWithEmailAndPassword(
email: email, password: password);
print('Sign In');
User? user = _authService.currentUser;
然后我调用 ('Read' 2?):
CustomUser loggedInUser = CustomUser();
await FirebaseFirestore.instance
.collection("users")
.doc(user!.uid)
.get()
.then((value) {
loggedInUser = CustomUser.fromMap(value.data());
});
我在哪里将用户信息从我的 firestore 集合映射到我的 CustomUser 对象。然后我通过流提供程序传递 CustomUser(我想我将更改为 Change Notifier Provider,但这应该与这个问题无关......):
Widget build(BuildContext context) {
return StreamProvider<CustomUser?>.value(
value: AuthService().user,
initialData: null,
child: MaterialApp(
home: Home()
然后我在家里打电话:
final user = Provider.of<CustomUser?>(context);
并用 user.email、user.name 等填充一些文本小部件...这也算作阅读吗?换句话说,上述逻辑算作 2 次还是 3 次读取到 firebase?
每次您调用 get()
时,Firestore SDK 都必须连接到服务器,以至少检查是否有更新版本的文档。这是收费文档阅读。
我建议查看 onSnapshot
,它会在文档上保持活跃的侦听器,因此在创建侦听器时只需与服务器核对一次,然后只获取更新的文档(因此有更新时阅读收费文档。