如何使用 dexie 在 indexedDB 中保存对象,其中 1 个字段是对象数组?
How save object in indexed DB wth dexie where 1 of the fields is array of objects?
我有索引数据库的下一个配置
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
}
我是否应该描述此字段的特殊方式以将新对象添加到存储中?
您可以在 indexedDB 中存储任何结构,包括对象数组,而无需在索引中对其进行描述。索引应仅列出您要在查询中使用的属性。
索引可以是普通索引或多条目索引。普通索引对 属性 本身起作用,而多条目索引对数组中的每个条目起作用。但是,这些条目必须是普通值而不是对象 - 因为对象本身不可索引。
因此,如果您的目的是查询具有 id = X 权限的所有用户,则需要将每个权限存储为普通 ID 号 ([1, 2, ...]) 而不是对象[{id: 1},{id: 2}, ...].
我有索引数据库的下一个配置
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
}
我是否应该描述此字段的特殊方式以将新对象添加到存储中?
您可以在 indexedDB 中存储任何结构,包括对象数组,而无需在索引中对其进行描述。索引应仅列出您要在查询中使用的属性。
索引可以是普通索引或多条目索引。普通索引对 属性 本身起作用,而多条目索引对数组中的每个条目起作用。但是,这些条目必须是普通值而不是对象 - 因为对象本身不可索引。
因此,如果您的目的是查询具有 id = X 权限的所有用户,则需要将每个权限存储为普通 ID 号 ([1, 2, ...]) 而不是对象[{id: 1},{id: 2}, ...].