android - 使用带有颤振的sembast(NoSql)查询问题
问题描述
我是 NoSql 数据库的新手,我只想问你一个关于 sembast 使用的简单问题!我正在用颤振开发一个非常简单的应用程序,我想在数组“列表”中获取对象,其中“名称”等于 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 操作)
查看复杂过滤的问题
推荐阅读
- mysql - 在 windows 中安装 MySQL 插件时出错
- javascript - 如何动态设置 HTML 元素的标题属性?
- database - Laravel:在一种方法中创建两个表
- jquery - 无法使用 ajax 和 jquery 从数据表中删除一行 [ajax 调用不起作用]
- laravel - 编辑表单时,上传的文件没有进入上传的字段
- ios - UITextField 键盘在每次按键后关闭
- mysql - MySQL innodb 在更新两个不同的行时出现死锁
- swift - 导航栏的背景图像 iOS SWIFT
- php - mysql fetch() 返回空值
- ios - iOS Swift inApp 购买与 Auto-Renewable 一个订阅与多个设备