【问题标题】:Query problem using sembast (NoSql) with flutter使用带有颤振的sembast(NoSql)查询问题
【发布时间】:2020-12-16 16:57:37
【问题描述】:

我是 NoSql 数据库的新手,我只想问你一个关于 sembast 使用的简单问题!我正在用flutter开发一个非常简单的应用程序,我想在数组“list”中获取对象,其中“name”等于1。

{
    "id": 12345,
    "list": [{
        "name": 1,
        "element": [{
            "nameItem": "a"
        }, {
            "nameItem": "b"
        }]
    }, {
        "name": 2,
        "element": []
    }, {
        "name": 3,
        "element": []
    }]
}

所以我想做一个查询来检索我这个信息:

{
    "name": 1,
    "element": [{
        "nameItem": "a"
    }, {
        "nameItem": "b"
    }]
}

我已经编写了这段代码,但它不起作用:我不明白如何使用子标签作为 json 树中的键进行查询。

  Future<List<ElementList>> getElementFromList(int name) async{
    final finder = Finder(filter: Filter.equals("name", name));
    final recordSnapshot = await _elementList.find(await _db, finder: finder);
    return recordSnapshot.map((snapshot){
      final elementObj = ElementList.fromJson(snapshot.value);
      return elementObj;
    }).toList();
  }

这返回了我 []。我该如何解决这个问题? 提前谢谢!

【问题讨论】:

    标签: android flutter dart nosql sembast


    【解决方案1】:

    Sembast 查询允许过滤记录,而不是记录的一部分。如果您提到的对象是整条记录,您可以:

    • 使用自定义过滤器自行查找数据库中的每条记录(检查list 字段中的每一项)
    • 检索记录时,提取项目(执行类似的 Map/List 操作)

    an issue with a complex filtering

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 1970-01-01
      • 2021-12-16
      • 2020-12-13
      • 2021-08-08
      • 2020-02-16
      • 2021-11-16
      • 2021-05-05
      • 2022-01-12
      相关资源
      最近更新 更多