使用 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_idsection_idoutreach_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

为 angularjs 创建一个 ydn-db 服务

YDN-DB - 删除数据库,然后在页面加载/重新加载时重新创建和加载,但在刷新时不加载

是否可以知道 ydn-db 的 put 操作的进度?

如何使用 YDN-DB 在 keypath 之后获取下一个元素