微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用带有颤振的SembastNoSql的查询问题

如何解决使用带有颤振的SembastNoSql的查询问题

我对Nosql数据库非常陌生,我只想问一个关于使用sembast的简单问题!我正在开发一个带有Flutter的非常简单的应用程序,我想将对象的数组“列表”中的“名称”等于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();
  }

这使我返回[]。我该如何解决这个问题? 预先谢谢你!

解决方法

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

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

请参见an issue with a complex filtering

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。