Database API
CUTOS数据库基本表结构为Key-Value格式,Value可以是任意json对象。这样设计的好处是Value修改字段数据库不需要升级,缺点是不能像传统数据库一样灵活访问。 如果需要更灵活的数据库访问功能,可以使用CUTOS提供的SQL全兼容接口。
CUTOS基本表结构(默认主键名称为id
,数据类型为 INTEGER
):
字段 | 数据类型 | 说明 |
---|---|---|
id | INTEGER | 主键 |
value | TEXT | 数据 |
tid | TEXT | 外键,transaction id |
sync | INTEGER | 同步标志: 0-未同步,1-同步 |
timestamp | INTEGER | 最近一次修改时戳 |
安装
npm install @cutos/core
引入依赖
import {CoreAPI, CoreClass} from '@cutos/core';
Database
构造函数
import {CoreAPI, CoreClass} from '@cutos/core';
let database = new CoreClass.Database(db);
- db: 数据库名称,不传名称默认lwa.db
Database.connect
连接数据库
database.connect(callback)
- callback: 回调函数
举例:
let database = database.connect((result, error) => {
if (!error) {
console.log(result)
}
})
- 返回结果示例:
{
"dbPath": "/home/linaro/.config/dios/data/lwa.db"
}
Database.run
运行sql
database.run(sql, callback)
- sql: 执行sql语句
- callback: 回调函数
举例:
database.run('select * from device', (result, error) => {
if (!error) {
console.log(result)
}
})
- 返回结果示例:
[
{
"id": 1,
"value": "{\"type\":\"printer\",\"name\":\"HP-1\"}",
"tid": "tra-001",
"sync": 0,
"timestamp": 1691401911678
},
{
"id": 2,
"value": "{\"type\":\"printer\",\"name\":\"HP-2\"}",
"tid": "tra-002",
"sync": 0,
"timestamp": 1691401911681
}
]
Database.Table
构造函数
let table = new Database.Table(name, db);
- name: 表名
- db: 数据库实例
举例:
let table = new Database.Table('device', database);
Table.create
创建数据库表
table.create([opts], callback)
- opts: 可选参数,包含3个属性:
- retentionTime: 保留时间,单位小时;不传默认永久保留
- keyName: 名称,不传默认为'id'
- keyType: 类型,含有2种类型'TEXT'和'INTEGER',不传默认为'INTEGER'
- callback: 回调函数
举例:
table.create((result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
[]
Table.insert
插入数据
table.insert(value, [opts], callback);
- value: 插入数据
- opts: 可选参数
- tid: 外键id,用于在多条记录间建立关系
- callback: 回调函数
举例:
let tid = "tra-001";
table.insert({type: "printer", name: "NEC"}, {tid: tid}, (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
{
"status": true,
"row": 1
}
table.insertById
通过id插入数据
table.insertById(id, value, [opts], callback)
- id: 数据id
- value: 插入数据
- opts: 可选参数
- tid: 外键id,用于在多条记录间建立关系
- callback: 回调函数
举例:
let tid = "tra-001";
table.insertById(1, {type: "printer", name: "NEC"}, {tid: tid}, (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
{
"status": true,
"row": 1
}
Table.update
更新数据
table.update(id, value, callback);
- id: 数据id
- value: 更新数据
- callback: 回调函数
举例:
table.update(row, {type: "printer", name: "HP-2"}, (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
{
"status": true,
"msg": 0
}
table.delete
删除数据
table.delete(id, callback)
- id: 数据id
- callback: 回调函数
Table.query
查询数据
table.query(id, callback);
- id: 数据id
- callback: 回调函数
举例:
deviceTable.query(row, (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
[
{
"id": 2,
"value": "{\"type\":\"printer\",\"name\":\"HP-2\"}",
"tid": "tra-001",
"sync": 0,
"timestamp": 1691401911681
}
]
Table.sync
同步数据
table.sync(id, callback);
- id: 数据id
- callback: 回调函数
举例:
deviceTable.sync(row, (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
{
"status": true,
"msg": 0
}
Table.queryUnsynced
查询未同步数据
table.queryUnsynced([opts], callback);
- opts: 可选参数
- callback: 回调函数
举例:
deviceTable.queryUnsynced((result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
[
{
"id": 1,
"value": "{\"type\":\"printer\",\"name\":\"NEC\"}",
"tid": "tra-001",
"sync": 0,
"timestamp": 1691402230172
}
]
Table.queryByTid
通过外键查询数据
table.queryByTid(tid, callback);
- tid: 外键id
- callback: 回调函数
举例:
deviceTable.queryByTid("tra-001", (result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
[
{
"id": 2,
"value": "{\"type\":\"printer\",\"name\":\"HP-2\"}",
"tid": "tra-001",
"sync": 0,
"timestamp": 1691401911681
}
]
Table.queryAll
查询所有数据
table.queryAll(callback);
- callback: 回调函数
举例:
deviceTable.queryAll((result, error) => {
if (!error) {
console.log(result)
}
});
- 返回结果示例:
[
{
"id": 1,
"value": "{\"type\":\"printer\",\"name\":\"HP-1\"}",
"tid": "tra-001",
"sync": 0,
"timestamp": 1691401911678
},
{
"id": 2,
"value": "{\"type\":\"printer\",\"name\":\"HP-2\"}",
"tid": "tra-002",
"sync": 0,
"timestamp": 1691401911681
}
]