# 说明

db是基于nanosql官网 (opens new window)开发的,它是一个小而快的数据库引擎, 他支持联合查询, 分组, 事务, ORM等功能, 支持 内存, indeedDB, Local Storage, WebSQL, Level DB等等数据库

# db.json

要使用数据库,必须提前在配置文件db.json中定义好表结构,db.json位于项目根目录,结构:

{
    "isCloud": false, // 是否是云端数据库, false为本地数据库
    "tables": [{
        "name": "user",
        "model": {
            "id:int": {
                "pk": true,
                "ai": true
            },
            "age:int": {
                "default": 13,
                "max": 110,
                "min": 13
            },
            "name:string": {
                "default": "none",
                "notNull": true
            }
        }
    }]// 表结构
}

WARNING

特别提醒:每次修改完表结构,必须重启对应的应用才会生效

表结构详见nanosql (opens new window)

WARNING

只有初始化完数据库才能进行相关的操作

window.cool.event.onDBInit(() => {
    console.log('数据库初始化完成')
})

# 新增更新

# upsert

对应nanosqlupsert (opens new window)

// 新增记录
window.cool.db.upsert("user", { age: 20, name: "啊平" }); 

// 批量插入
window.cool.db.upsert("user", [{ age: 26, name: "啊平6" }, { age: 26, name: "啊平6" }]); 

// 更新记录
window.cool.db.upsert("user", { id: 1, age: 22, name: "啊平1" }); // 有id主键, 插入的时候就等同于更新的方法

// 批量更新
window.cool.db.upsert("user", [{ id: 1, age: 26, name: "啊平6" }, { id: 2, age: 26, name: "啊平6" }]); // 有id主键, 插入的时候就等同于更新的方法

// 使用where更新
window.cool.db.upsert("user", { age: 26, name: "啊平6" }, [['id', '=', 1], 'AND', ['name', '=', '啊平666']]);

WARNING

注意: 使用where更新的时候,不支持批量更新

参数说明

参数 类型 必填 说明
table 字符串 表名
data 对象 数组
where 数组 条件

# 删除

# delete

对应nanosqldelete (opens new window)

//多条件删除
window.cool.db.delete('user', [['id', '=', 1], 'AND', ['name', '=', '啊平666']]);

参数说明

参数 类型 必填 说明
table 字符串 表名
where 数组 条件

# 查询

# find

对应nanosqlselect (opens new window)

// 查询所有
window.cool.db.find('user').then(res=>{
    console.log('查到的数据', res)
})

// 条件+排序查询所有
window.cool.db.find('user', {
    where: [['name', 'LIKE', '%啊平%'], 'AND', ['age', '=', 20]],
    orderBy: ["id DESC"]
}).then(res=>{
    console.log('查到的数据', res)
})

//关联查询
window.cool.db.find('wallet', {
join: {
    type: 'left',
    with: {table: "user"},
    on: ["user.id","=","wallet.userId"]
}
}).then(res=>{
console.log(res)
})

参数说明

参数 类型 必填 说明
table 字符串 表名
condition 对象 条件
columns 数组 需要查询的列, 为空时则查询所有列

TIP

where查询关键字: <,=, !=, >, <=, >=, IN, NOT IN, REGEX, LIKE, NOT LIKE, BETWEEN, NOT BETWEEN, INCLUDES, NOT INCLUDES, INTERSECT, INTERSECT ALL, NOT INTERSECT.

# findPage

分页查询

// 分页查询
window.cool.db
.findPage("user", {
    where: [["name", "LIKE", "%1%"]],
    orderBy: ["id DESC"]
}, 1, 1)
.then(res => {
    console.log("查到的数据", res);
});
参数 类型 必填 说明
table 字符串 表名
condition 对象 条件
size 数字 每页条数,默认20
page 数字 当前页,默认1
columns 数组 需要查询的列, 为空时则查询所有列