1.0.8 • Published 8 months ago

relational-indexdb v1.0.8

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

relational-indexdb 使用说明

IndexedDB:
  • IndexedDB 是一种客户端存储技术 非关系型数据库,用于在 Web 浏览器中存储和检索大量结构化数据。

  • 它提供了一个类似关系型数据库的API,但是数据存储在浏览器中而不是远程服务器上。

  • IndexedDB 使用对象存储空间来存储和检索数据,类似于关系型数据库的表。

  • 它支持复杂的查询和索引,以及事务操作。

  • IndexedDB 在 Web 应用程序中广泛用于离线数据存储、缓存数据和本地数据持久化等场景。

  • 虽然index DB是非关系型数据库 但是a yong为大家封装好了各种方法(updateDataByCursor、queryDataByCursor、deleteDataByCursor) 可以到达关系型数据库 那样的操作效果所以财位组件名字命名为relational-indexdb

当谈到数据库时,有两种主要类型:关系型数据库和非关系型数据库。下面是对它们以及 IndexedDB 的简要介绍:

  1. 关系型数据库:

    • 关系型数据库使用表格结构来组织和存储数据。
    • 数据以行和列的形式存储在表中,其中每行表示一个记录,每列表示一个属性或字段。
    • 数据之间通过关系(主键和外键)建立关联。
    • 常见的关系型数据库有 MySQL、Oracle、SQL Server 和 PostgreSQL。
  2. 非关系型数据库(NoSQL):

    • 非关系型数据库采用不同的数据模型,如键值对、文档、列族和图形等。
    • 它们通常更灵活,适用于处理大量非结构化和半结构化数据。
    • 没有固定的表格结构,允许动态添加或删除字段。
    • 常见的非关系型数据库有 MongoDB、Cassandra、Redis 和 Elasticsearch。
RelationalIndexDB构造函数
参数类型描述
databaseNamestring数据库名称
versionnumber数据库版本号
tableNamestring表名
keyPathstring主键
autoIncrementboolean是否自增
indexConfigsIndexConfigs[]索引配置
const tableName = 'myTable';
const version = 1;
const keyPath = 'id';
const tableSchema = [
    {name: 'id', keyPath: 'id', unique: true},
    {name: 'issue', keyPath: 'issue', unique: false},
    {name: 'answer', keyPath: 'answer', unique: false},
];
//在new RelationalIndexDB 示例时候将会创建一个数据表
const indexDB = new RelationalIndexDB('ayong', 1, tableName, keyPath, true, tableSchema);

方法methds ⚠️ 所有方法返回值都是proms

createTable(tableName, version, keyPath, autoIncrement, indexConfigs)

新增/创建表。

参数类型描述
tableNamestring表名
versionnumber版本号
keyPathstring主键
autoIncrementboolean是否自增
indexConfigsIndexConfigs[]索引配置
IndexConfigs 表配置字段结介绍
字段类型描述
namestring索引名称,用于标识该索引在对象存储空间中的唯一性
keyPathstring索引字段的路径,指定要索引的属性或键路径
uniqueboolean指示索引的值是否唯一,默认为false
const indexConfigs = [
  { name: 'nameIndex', keyPath: 'name', unique: false },
  { name: 'ageIndex', keyPath: 'age', unique: true },
];

createTable使用代码示例

const indexDB = new RelationalIndexDB('myDatabase', 2);
indexDB.createTable('myTable', 1, 'id', true, [
  { name: 'id', keyPath: 'id', unique: true }, 
  {name: 'title', keyPath: 'title', unique: false},  
  {name: 'useName', keyPath: 'useName', unique: false},
   {name: 'level', keyPath: 'level', unique: false}
]);

addRecord(key)

添加数据

参数类型描述
tableNamestring表名
dataObject存储数据:数据结构要与表结构相对应,主键不能重复
indexDB.addRecord('myTable', { id: '123', useName: 'John Doe', title: '阿勇学前端', level: 100 });

queryRecord(tableName,key)

根据主键查询数据

参数类型描述
tableNamestring表名
keystring主键值
indexDB.deleteRecord('myTable', '123');

deleteRecord(tableName, key)

删除记录。

参数类型描述
tableNamestring表名
keyany主键值
//删除主键 为123 的那条数据
indexDB.updateRecord('myTable', '123');

updateRecord(tableName, key, newData)

更新数据。

参数类型描述
tableNamestring表名
keyany主键值
newDataany新数据对象:要修改的具体字段会与老数据覆盖相同的ke y
/**
*这示例将会更新myTable表中 主键为 123。这条数据中 表字段 name 修改为 John Smith,更改哪个字段就写入哪个字段的新值就可以了
 类似于mysql中的s q l语句  但是要注意 index DB不能执行s q l 他是非关系型数据库
 UPDATE myTable SET name = 'John Smith' WHERE id = 123;

*/
indexDB.updateRecord('myTable', '123', { name: 'John Smith' });

batchUpdateRecords(tableName, updatesToUpdate)

参数类型描述
tableNamestring表名
updatesToUpdateupdatesToUpdate[]要批量修改的列表数组字段详情见下方

updatesToUpdate[] 批量修改的列表数组字段详情

参数类型描述
keyPathValuestring要修改的主键值
dataObject要修改的字段
/**
* 批量更新跟updateRecord 一样 不同的是更新多条
*
**/
indexDB.batchUpdateRecords("myTable", [{
    keyPathValue: 1688291753347,
    data: {
        id: 1688291753347,
        name: 'ayong---6666'
    }
},
    {
        keyPathValue: 1688291767078,
        data: {
            id: 1688291767078,
            title: '阿勇学前端'
        }
    }
])

batchDeleteRecords(tableName, keysToDelete)

批量删除数据。

参数类型描述
tableNamestring表名
keysToDeleteany[]需要删除的主键值数组
const keys = ['123', '456'];
indexDB.batchDeleteRecords('myTable', keys);

deleteTable(tableName)

删除表。

参数类型描述
tableNamestring表名
indexDB.deleteTable('myTable');

queryRecordsInRange(tableName, indexName, start, end)

范围查询记录。

类型描述
tableNamestring表名
indexNamestring索引名
startany范围起始值
endany范围结束值
 //查询主键为id 值在1——20 之间的数据
indexDB.queryRecordsInRange('myTable', 'id', 1, 10).then((record) => {
      console.log('Record-----:', record);
  })

deleteRecordsInRange(tableName, indexName, start, end)

参数类型描述
tableNamestring表名
indexNamestring索引名
startany范围起始值
endany范围结束值
 //删除主键为id 值在1——20 之间的数据
indexDB.deleteRecordsInRange('myTable', 'id', 1, 10).then((record) => {
      console.log('Record-----:', record);
  })

范围修改记录。

参数类型描述
tableNamestring表名
indexNamestring索引名
startany范围起始值
endany范围结束值
newDataany要更新的新数据

deleteDataByCursor(tableName: string, condition: object): Promise

参数类型描述
tableNamestring表名
conditionobject删除的条件对象
/**
这个方法就是筛选符合条件数据 将这条数据删除
* 删除title = 无意义内卷   id:'123 的这条数据 就是符合多条件筛选条件 并操作这条数据
与之前的范围修改数据deleteRecordsInRange  batchDeleteRecords 不同的是他们都是以主键为筛选条件操作数据
这个方法可以提供给你可以任意以表结构中筛选任意字段 符合条件后操作数据 
它类似于mysql中 s q l 语句 DELETE FROM myTable WHERE title = '无意义内卷' AND id = '123';

*
**/
indexDB.deleteDataByCursor('myTable', { title: '无意义内卷',id:'123' })
  .then(() => {
    console.log('数据删除成功');
  })
  .catch((error) => {
    console.log('删除数据时发生错误:', error);
  });

updateDataByCursor

该方法用于通过游标更新符合条件的数据。

参数类型描述
tableNamestring表名
conditionobject更新的条件对象
updateDataobject更新的数据对象
/**
*如果更改的数据字段中有主键 例如这个表中的主键是id。那你的id 不能跟被的数据重复
它类似于s q l中的
UPDATE myTable SET title = '我要加油', id = '1231231' WHERE title = '无意义内卷' AND id = '123';

**/
indexDB.updateDataByCursor('myTable', { title: '无意义内卷',id:'123' }, { title: '我要加油',id:'1231231' })
  .then(() => {
    console.log('数据更新成功');
  })
  .catch((error) => {
    console.log('更新数据时发生错误:', error);
  });

queryDataByCursor

该方法用于通过游标查询符合条件的数据。

参数类型描述
tableNamestring表名
conditionobject查询的条件对象
/**
根据表中多个字段查询数据 ;查询title = '无意义内卷'并且id = '123' 的数据 
它类似于s q l中的
SELECT * FROM myTable WHERE title = '无意义内卷' AND id = '123';
**/
indexDB.queryDataByCursor('myTable', { age: 30 })
  .then((results) => {
    console.log('查询到的数据:', results);
  })
  .catch((error) => {
    console.log('查询数据时发生错误:', error);
  });

clearTable(tableName)

参数类型描述
tableNamestring表名
indexDB.clearTable('myTable');

deleteDatabase()

删除数据库。

indexDB.deleteDatabase();
1.0.8

8 months ago

1.0.7

10 months ago

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago