Query a Map containing an ID saved in Cloud Firestore with Dart/Flutter

后端 未结 3 1145
广开言路
广开言路 2021-01-26 12:45

How to get a Map stored in Cloud Firestore with Dart/Flutter ? I tried this but it only works with Array :

Firestore.instance
            .collection(\'posts\')
          


        
相关标签:
3条回答
  • 2021-01-26 13:18

    It doesn't really make sense for userlist to be an array here. Firestore doesn't let you query for values of maps inside an array. Just store it as a map. If userlist was just a map of uid/value pairs, you could query it like this using dot notation:

    Firestore.instance
            .collection('posts')
            .orderBy('createdAt', descending: true)
            .where('userlist.' + userId, isEqualTo: true)
            .snapshots(),
    
    0 讨论(0)
  • 2021-01-26 13:18

    Just adding to Doug Stevenson's answer, I had to use the key isGreaterThan: '' in order to not get an empty array.

    Firestore.instance
        .collection('posts')
        .where('userlist.' + userId, isGreaterThan: '')
        .snapshots(),
    
    0 讨论(0)
  • 2021-01-26 13:34

    I don't recommend your way of data model. Because of some limitations as below:

    1. You can only have 20000 fields in a firestore document (including array fields).
    2. You can't assign security rules to each field. Security Rules is a thing that you have to think of.
    3. You can't query them.

    So, better I would recommend you to use documents for each user.

    0 讨论(0)
提交回复
热议问题