firebase - Firestore .where如果没有数据,则永不返回结果Flutter Stream

标签 firebase flutter dart google-cloud-firestore

我想通过用户uid从Firestore获取所有用户帖子。

但是如果我在.where内部使用过滤器->获取userPosts-> databaseReference.where ...

像这样的评论行

  Stream<List<PostData>> get userPosts {
    return databaseReference
    // .where('uid', isEqualTo: this.user.uid)

如果Firebase中没有任何帖子,则永远不会加载任何内容,只会一直加载。但是,如果我删除/评论此行
// .where('uid', isEqualTo: this.user.uid)

它返回[]并且一切正常(即使Firebase中没有任何帖子!)。

为什么会这样?

我认为在第一种情况下它返回null?如果是这样,为什么在没有.where('uid',isEqualTo:this.user.uid)的第二种情况下,它返回的不是null?我该如何解决它或手动返回非null?为什么如果我添加.where('uid',isEqualTo:this.user.uid)并且在Firebase中没有使用该uid的帖子,它不会返回不为null的信息?

是的,我可以像现在一样在-> _postListFromSnapshot(QuerySnapshot快照)内过滤帖子。但是我不想从Firebase获取所有帖子并在_postListFromSnapshot()中对其进行过滤。

如果没有任何帖子返回[List]这样的空列表,该如何添加.where过滤器?
  Stream<List<PostData>> get userPosts {
    return databaseReference
    this line -> // .where('uid', isEqualTo: this.user.uid)

这是我的所有代码:
  final databaseReference = Firestore.instance.collection('posts');
...
// get user posts stream
  Stream<List<PostData>> get userPosts {
    return databaseReference
        // .where('uid', isEqualTo: this.user.uid)
        .orderBy('date', descending: true)
        .snapshots()
        .map(_postListFromSnapshot);
  }

  // post list from snapshop
  List<PostData> _postListFromSnapshot(QuerySnapshot snapshot) {
    return snapshot.documents
        .where((doc) => doc.data['uid'] == user.uid)
        .map((doc) {
      return PostData(
          date: doc.data['date'] ?? DateTime.now(),
          text: doc.data['text'] ?? '',
          email: doc.data['email'] ?? ''
    }).toList();
  }

//And here I listen to Stream and show Loading or PostsScreen
@override
  Widget build(BuildContext context) {
    final posts = Provider.of<List<PostData>>(context);
    if (posts == null) {
      return Loading();
    } else {
      return PostsScreen();
    }...

最佳答案

here用户报告了相同的问题

该问题的解决方案是向您的Firestore添加豁免

关于firebase - Firestore .where如果没有数据,则永不返回结果Flutter Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59901558/

相关文章:

flutter - 方法 '[]' 在 null 上调用,但在 App 中有效

post - Flutter - 处理POST请求中的状态码302

android-studio - Android Studio无法为Dart扩展方法识别 “on”关键字

Flutter 中的 JSON ObjectMapper

java - Firebase 数据到 RecyclerView

android - 如何使用 Kotlin 从 Firebase 数据库中检索数据?

android - ListView 适配器不能应用于 Modal 类

angular - 导入 AngularFirestoreModule : "This type parameter might need an ` extends firebase. firestore.DocumentData` 约束时出现问题。”

dart - 相机没有打开应用拍照并上传

dart - 将谷歌日历插入 flutter 移动应用程序