首页 > 解决方案 > 如何使用 dexie 将对象保存在索引数据库中,其中 1 个字段是对象数组?

问题描述

我有索引数据库的下一个配置

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
 }

我应该描述这个领域的特殊方式来将新对象添加到存储中吗?

标签: javascriptindexeddbdexie

解决方案


您可以在 indexedDB 中存储任何结构,包括对象数组,而无需在索引中对其进行描述。索引应仅列出您想在查询中使用的属性。

索引可以是plain 或multiEntry。普通索引适用于属性本身,而多条目索引则适用于数组中的每个条目。但是,这些条目必须是普通值而不是对象——因为对象本身是不可索引的。

因此,如果您的意图是查询所有具有 id = X 权限的用户,您需要将每个权限存储为普通 ID 号 ([1, 2, ...]) 而不是对象 [{id: 1 },{id: 2}, ...]。


推荐阅读