【问题标题】:how to dynamically filter with react-native realm如何使用 react-native 领域动态过滤
【发布时间】:2016-07-12 00:54:55
【问题描述】:

我正在切换到领域以进行本机反应,并希望利用其内置的查询/过滤。我有带有 3 个可能选项的复选框过滤器,选定的选项作为数组传递:

var filters = ['complete', 'inProgress', 'notStarted']

如何在不使用多个 if/else 语句的情况下进行过滤?

  let subdivisions = realm.objects('Subdivision');
       let result = subdivisions.filtered('statusSurvey == $0',['complete','notStarted']);

或者是否有必要使用纯 javascript 或 lodash?

【问题讨论】:

    标签: javascript react-native realm lodash


    【解决方案1】:

    这是另一种方法,无需在字符串中构建查询,也不必转义过滤器值:

    filters = ['a', 'b', 'c']
    const realmFilter = [Array(filters.length).fill().map((x, i)=> `statusSurvey == $${i}`).join(" OR ")].concat(filters)
    
    realm.objects('Subdivision').filtered(...realmFilter)
    

    【讨论】:

    • 我想知道如何将此建议扩展到每个过滤器的多个条件...
    【解决方案2】:

    您是否在询问如何动态构建一个领域查询字符串,该字符串将根据当前过滤器返回结果?

    如果我理解正确,您可以像这样构建查询字符串:

    var query = 'statusSurvey == ';
    for (var i = 0; i < filters.length; i++) {
      query += `'${filters[i]}'`; 
      if (i + 1 < filters.length) {
        query += ` OR statusSurvey == `
      }
    }
    var result = subdivisions.filtered(query); 
    

    【讨论】:

    • 我不在我的电脑前,但这正是我要找的东西!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多