使用 YDN-DB 的 IndexedDB:如何在多个过滤器上查询对象存储
Posted
技术标签:
【中文标题】使用 YDN-DB 的 IndexedDB:如何在多个过滤器上查询对象存储【英文标题】:IndexedDB using YDN-DB: How to query object store on multiple filters 【发布时间】:2014-08-13 21:46:57 【问题描述】:在离线html5项目上工作,我有以下商店:
outreach_answers =
name: 'outreach_answers',
keyPath: ['device_unique_id', 'outreach_id', 'question_id'],
indexes: [
keyPath: 'outreach_id'
,
keyPath: 'section_id'
,
keyPath: 'question_id'
,
keyPath: 'answer'
]
我需要进行如下查询:
SELECT records FROM outreach_answers
WHERE question_id = 12 AND section_id = 2 AND outreach_id = 'AB-56'
我能够使用的大多数方法(例如db.get()
、db.values()
甚至db.from()...where().list()
)似乎都非常严格。
其中,最后一种方法似乎是最有希望的,直到我真的需要运行一个应该同时过滤question_id
、section_id
和outreach_id
的查询。
提前谢谢你!
【问题讨论】:
【参考方案1】:您可以在this answer 上找到article about multiple filtered query with YDN-DB 和一些提示。
【讨论】:
谢谢@Kyaw。通过第一个链接,我发现最接近的部分是:Coupound Index
和以key_range = ydn.db.KeyRange.bound(['SA', 'A'], ['SA', 'B']);
开头的示例。我的观察: 1. 我感兴趣的三个领域不在一个复合索引上,一定是吗? 2. 我无法理解那些Iterator
方法,它们是实现我目标的唯一方法吗? 3.要使用Iterator,看来我需要在Query
之外多出一个ydn.db模块,对吧?
@IfediOkonkwo 不幸的是,您的两个观察都是正确的。这两种方法还没有在 Query 模块中实现,因此更容易使用。有一些尝试,可以尝试多次调用where
。
真的吗?没有意识到我可以在一个db.from
上链接多个where
方法。如果是这样,那么至少有一个解决方法。我要看看那个。谢谢。以上是关于使用 YDN-DB 的 IndexedDB:如何在多个过滤器上查询对象存储的主要内容,如果未能解决你的问题,请参考以下文章
YDN-DB 仅从我的 IndexedDb 存储中获取前 100 行
在 Firefox Jetpack 插件中使用 ydn-db