如何在 Dexie.js 中索引和查询嵌套数组?

Posted

技术标签:

【中文标题】如何在 Dexie.js 中索引和查询嵌套数组?【英文标题】:How can I index and query nested arrays in Dexie.js? 【发布时间】:2021-08-11 15:40:32 【问题描述】:

MultiEntry 索引的文档说可以使用任何Indexable Type。

数组是可索引的类型。因此应该可以索引数组的数组等等,对吧?

但是,我找不到任何示例或弄清楚如何查询这些示例。

基本上,我想要的是这样的:

var db = new Dexie('dbname');

db.version(1).stores(
  books: 'id, author, name, *properties'
);

db.books.put(
  id: 1,
  name: 'Human Action', 
  author: 'Ludwig von Mises',
  properties: [['language', 'english'], ['subject', 'philosophy'], ['subject', 'economics']]
);

然后能够找到具有economics 主题的书。

【问题讨论】:

【参考方案1】:

没错。属性数组中的每个条目都是一个包含两个字符串的数组 - 内部数组本身是可索引的,并且可以充当可索引条目。

所以要查找所有具有学科经济学的书籍,请这样做

db.books.where(properties: ['subject', 'economics']).toArray()

或等效形式:

db.books
  .where('properties')
  .equals(['subject', 'economics'])
  .toArray();

【讨论】:

以上是关于如何在 Dexie.js 中索引和查询嵌套数组?的主要内容,如果未能解决你的问题,请参考以下文章

缓存 - IndexedDB - Dexie.js

在 JavaScript 文件中添加 Dexie.js 查询会提示缺少类型

如何为数组中的嵌套数组中的多个对象生成连续索引

MongoDB $and 仅当 $and 在文档的同一数组索引中为真时才查询 - 特别是对于双重嵌套数组 [重复]

如何使用 dexie.js 添加新条目

如何在Safari 10.1.2及更高版本中使用Dexie.js(v 2.0.1)数据库?