0

我有一个颤动的移动应用程序,我希望我的用户根据他们将选择的过滤器来查询其他用户配置文件。过滤器是可选的,因此如果用户未选择任何用户配置文件,则查询将返回系统中的所有用户配置文件。

以下是我的用户模型架构:

class UserProfile extends Model {
  static const classType = const _UserProfileModelType();
  final String id;
  final String Country;
  final String Username;
  final List<String> InterestList;
  final List<String> LanguageList;

国家、兴趣和语言的列表来自数据库,因此用户没有免费的输入字段,但我很想知道如何进行查询,所以如果用户选择一个国家而不是语言,过滤器被正确执行。

该文档解释了如何创建复合查询,但假设正在查询所有字段。

它也没有解释如何查询列表中的值(例如,如果我选择西班牙语和英语,我会在他们的语言列表中获得所有西班牙语和英语用户)。这不是我的应用程序的必备功能。

我最好的尝试是做这样的事情:

    var query = UserProfile.USERID.ne(loggedUser.userId);
    var compositeQuery;

    if(_selectedCountry != null) {
      compositeQuery = query.and(UserProfile.COUNTRY.eq(_selectedCountry))
    }
    /* Rest of code not included for brevity, imagine two for-loops with all the selected languages and interests */

    Amplify.DataStore.query(UserProfile.classType, where: compositeQuery != null ? compositeQuery: query);

很确定一定有更好的方法。还是我必须将所有用户带到应用程序,然后使用常规飞镖列表功能进行过滤?

谢谢!

4

0 回答 0