【问题标题】:Where Clause on Compound Index Produces "not indexed" Error复合索引子句产生“未索引”错误的地方
【发布时间】:2017-02-08 09:14:24
【问题描述】:

我有以下表架构:

db.version(1).stores({
    sales: "[item_id+date],sales"
});

dateitem_id 的组合必须是唯一的。如何使用where 子句(不考虑日期)获取给定item_id 的所有记录?

以下产生错误:

db.sales.where('item_id').equals(some_item_id)

未处理的拒绝:SchemaError: KeyPath item_id on object store sales 未编入索引

【问题讨论】:

    标签: dexie


    【解决方案1】:
    db.sales.where('[item_id+date]').between ([some_item_id, -Infinity], [some_item_id, Dexie.maxKey])
    

    【讨论】:

    • 谢谢。出于某种原因,上述返回 n-1 记录。也许是因为between 不包含在内?
    • 好的,between ([some_item_id, -Infinity], [some_item_id, Dexie.maxKey, true, true) 做到了。
    • 这似乎不起作用,我执行了以下查询,await window.db.Thread.where('[last_message_received_timestamp+needSync]').between([Dexie.minKey, 1], [Dexie.maxKey, 1]).toArray(),它返回了我的整个结果集。我已验证需要同步 = 1 的 IDB 中没有价值。我使用的是 Chrome 最新版本
    • @ShubhamKhatri Dexie.minKey 和 Dexie.MaxKey 必须是数组的第二个位置。你把它放在第一位。'
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2018-11-19
    相关资源
    最近更新 更多