如何使用 dexie 在 indexedDB 中保存对象,其中 1 个字段是对象数组?
Posted
技术标签:
【中文标题】如何使用 dexie 在 indexedDB 中保存对象,其中 1 个字段是对象数组?【英文标题】:How save object in indexed DB wth dexie where 1 of the fields is array of objects? 【发布时间】:2021-08-24 15:24:57 【问题描述】:我有索引数据库的下一个配置
import Dexie from 'dexie';
const db = new Dexie("dbName");
db.version(1).stores(
users: '++id, name,company,confirmPassword,email,password,*permissions'
);
const saveClient = async (client) =>
return await db.users.add(client);
;
export
saveClient
;
其中权限是对象数组
name: 'Alex',
company: 'Company',
password: 'Password',
confirmPassword: 'Password',
permissions : [id:1, id:2] //permisions
我应该描述这个字段以特殊方式添加新对象到存储吗?
【问题讨论】:
除非你需要索引数组 【参考方案1】:您可以在 indexedDB 中存储任何结构,包括对象数组,而无需在索引中对其进行描述。索引应仅列出您想在查询中使用的属性。
索引可以是plain 或multiEntry。普通索引适用于属性本身,而多条目索引则适用于数组中的每个条目。但是,这些条目必须是纯值而不是对象 - 因为对象本身不可索引。
因此,如果您的意图是查询所有具有 id = X 权限的用户,则需要将每个权限存储为普通 ID 号 ([1, 2, ...]) 而不是对象 [ id: 1,id: 2, ...]。
【讨论】:
以上是关于如何使用 dexie 在 indexedDB 中保存对象,其中 1 个字段是对象数组?的主要内容,如果未能解决你的问题,请参考以下文章
在 Quasar 中使用 Dexie 导出 IndexedDB 数据库