Skip to content

birdol/MpLocalDB

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MpLocalDB

微信小程序本地数据库

使用方法

  1. 复制 localDB.js7.97KBmin 版本 4.26KB)到 utils 目录下

  2. 在需要使用的页面的 js 文件中添加

    const localDB = require('utils/localDB.js')
    const _ = localDB.command

示例程序

const localDB = require('utils/localDB.js')
const _ = localDB.command
localDB.init() // 初始化
var articles = localDB.collection('articles')
if(!articles)
  articles = localDB.createCollection('articles') // 不存在则先创建
// 按文章 id 查找
var doc = articles.doc('xxx')
if(doc) {
  var data = doc.get() // 取得数据
} else {
  // 网络请求获取 data
  data._timeout = Date.now() + 15 * 24 * 3600000 // 设置过期时间为 15 天
  articles.add(data) // 添加到本地数据库
}
// 按类型查找
var data = articles.where({
  type: 'xxx'
}).get()
// 正则查找
var data = articles.where({
  title: /xxx/ // 标题中含有 xxx 的
}).get()
// 分页查找
var page2 = articles.skip(10).limit(10).get()
// 按时间查找
var data = articles.where({
  date: _.gte('20200501').and(_.lte('20200510')) // 大于等于 20200501 小于等于 20200510
}).get()
// 结果排序
var data = articles.orderBy('date', 'desc').get() // 按日期降序排序
// 清理过期数据
articles.where({
  _timeout: _.lt(Date.now()) // 过期时间早于当前的
}).remove()

api

db

名称 输入值 返回值 功能
init / / 初始化数据库
collection name Collection 获取名称为 name 的集合
createCollection name Collection 创建一个名称为 name 的集合
removeCollection name / 移除名称为 name 的集合

collection

名称 输入值 返回值 功能
add data id 向集合中添加一条数据
count / number 统计匹配查询条件的记录的条数
doc id document 获取一条记录
get / array 获取集合数据
limit number collection 指定查询结果集数量上限
orderBy field, order collection 指定查询排序条件
remove / / 删除多条数据
skip number collection 指定查询返回结果时从指定序列后的结果开始返回
update newVal / 更新多条数据
where query collection 进行条件查询

附:limitskip 仅对 get 有效

document

名称 输入值 返回值 功能
get / data 获取记录数据
remove / / 删除该记录
update newVal / 更新记录数据

command

查询指令:

名称 功能
eq 等于
neq 不等于
lt 小于
lte 小于或等于
gt 大于
gte 大于或等于
in 字段值在给定数组中
nin 字段值不在给定数组中
exists 判断字段是否存在
or 多字段或查询

单个字段的条件之间还可以通过 orand 进行组合,如

_.gt(30).and(_.lt(70)) // 大于 30 且小于 70
_.eq(0).or(_.eq(100)) // 等于 0 或等于 100

or 指令用于多字段或查询(默认是与查询)

// 查询 collection 表中 a 字段为 1 或 b 字段为 2 的记录
collection.where(_.or([{
  a: 1
}, {
  b: 2
}]))

更新指令:

名称 功能
set 设置字段为指定值
remove 删除字段
inc 原子自增字段值
mul 原子自乘字段值
push 如字段值为数组,往数组尾部增加指定值
pop 如字段值为数组,从数组尾部删除一个元素
shift 如字段值为数组,从数组头部删除一个元素
unshift 如字段值为数组,往数组头部增加指定值

注意事项

  1. 数据库存储在本地 storage 中,账号、设备之间 存在隔离;最大大小为 10MB请勿覆盖或删除 keylocalDBstorage,否则可能造成数据丢失
  2. 使用前 必须调用 db.init 方法(从 storage 中读取保存的数据,数据量较大的时候,需要选择一个合适的时机进行载入)
  3. 所有数据都在内存中,存取都较快,因此所有方法 均为同步方法,不返回 Promise
  4. 所有操作 不可撤销和恢复,尤其是 remove 方法需谨慎调用
  5. 集合名和一个集合内的 _id(可自动生成)不可重复,否则将无法创建
  6. 方法设置参考了云数据库的操作,关于各方法的详细信息可以直接参考 云数据库的文档

更新日志

  • 2020.7.9

    1. F 修复了 remove 后执行 where 可能出错的问题
  • 2020.6.30

    1. A 增加 or 指令,可以实现多字段或查询
  • 2020.5.13

    1. U 支持多字段排序(设置多个 orderBy
    2. U 同时设置 orderByskiplimit 时将先进行排序再执行 skiplimit
  • 2020.5.9

    1. A 添加了 count 方法

About

微信小程序本地数据库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%