PouchDB基础系列(一)
写在前面:
公司的一个项目是用到PouchDB,这是我第一次接触这个库,为了上手项目,所以对PouchDB的基础进行了学习,这个系列是简单记录PouchDB的常用API。
什么是PouchDB?
上图是官网对PouchDB的介绍,大概而言:PouchDB是一个浏览器数据库,开发者可以通过PouchDB在本地保存数据,并且这些数据的在脱机的情况也可以使用,同时,PouchDB可以在Node.js中运行。最后,PouchDB是使用JavaScript编写的开源项目。
此外,PouchDB是受Apache CouchDB所启发,当其运行在浏览器或者Node.js时,应用程序在联机时将与CouchDB服务器或者兼容服务器进行同步
一、安装PouchDB与使用
1、安装下载
(1)从官网下载PouchDB或者通过CDN服务:https://pouchdb.com/download.html
注:在生产环境建议下载压缩版,在开发环境下载未压缩版,以供开发人员进行调试
(2)通过npm下载
npm install --save pouchdb
同时,官网也提供了另外一个操作,假如仅在浏览器使用PouchDB,则可以使用下面的npm命令
npm install --save pouchdb-browser
2、使用
如果是通过第一种方法下载,在html文件引入js文件,并且在script标签中就可以使用PouchDB
<script src="//cdn.jsdelivr.net/npm/pouchdb@7.2.1/dist/pouchdb.min.js"></script> <script> var db = new PouchDB('my_database'); </script>
注:上面是通过CDN服务进行使用
通过npm包下载使用方法,在需要使用的页面中进行require应用
var PouchDB = require('pouchdb'); var db = new PouchDB('my_database');
二、关于PouchDB的API
API概述
PouchDB是具有异步API,支持callback回调,Promises以及异步功能,官网建议是使用Promise,我个人也是建议使用Promise,在现在的前端开发中,Promise常见的解决异步操作的解决方法。同时,大部分的API格式
db.doSomething(args..., [options], [callback])
其中,options配置项以及callback回调是可选的
Callbacks
Callbacks使用标准Node.js的写法
function(error,result){ /* ... ... */ }
当没有错误的时候,undefined将作为error的值
Promises
当没有指定使用Callbacks时,则认API会默认返回Promise对象。
假如要对PouchDB使用自定义的Promise,则必须在加载PouchDB之前先重新定义全局的Promise对象
<script>window.Promise = MyCustomPromiseLibrary;</script> <script src="path/to/pouchdb.js"></script>
在上述代码中,MyCustomPromiseLibrary为我自行定义的Promise,则我必须在scrpit脚本加载PouchDB前覆盖掉全局的Promise
Async function
可以在PouchDB使用基于Promise的async/await关键字,当然前提是项目是支持ES 7的或者使用了Babel这样的转译工具
async function myFunction(){ /* ... ... */ }
三、PouchDB常见的API
1、Create a database 创建数据库
new PouchDB([name], [options])
这个操作会创建一个新的数据库或者打开已有的数据库,如果name的值为一个URL时,如“http://domain.com/dbname”,则此时PouchDB将充当远程的CouchDB实例的数据库,否则此时将使用已存在的后端语言来创建本地数据库
name:name是必需的。
options:
本地数据库的options可选参数
auto_compaction:启动自动压缩,在每次更改数据库后默认调用compact()方法,默认值为false
adapter:可选'idb', 'leveldb', 'http',当未指定时,PouchDB会判断当前浏览器是否支持并且优先使用IndexedDB到webSQL
revs_limit:指定要跟踪的旧版本,假如指定的值为一个较低的数值,PouchDB可能无法通过复制确认新修订版本是否与当前任何修订版本相关,这可能导致冲突。默认值为1000
deterministic_revs:使用MD5哈希创建文档的唯一修订号。如果设置为false版本号是随机的UUID。默认为true
远程数据库的options可选参数
fetch(url, opts):拦截或者重写HTTP请求,可以通过添加或修改与HTTP请求相关的请求头或者选项,然后返回fetch标准的新Promise
auth.username + auth.password:通过使用格式为:http://user:pass@host/name或者uth.username + auth.password选项来指定HTTP身份验证的数据库
skip_setup:在创建时候PouchDB判断数据库是否存在,如果不存在,则尝试创建它,设置为true跳过此设置。
注:在indexedDB中,PouchDB将使用_pouch_作为内部数据库的名称前缀,请不要创建具有相同前缀的数据库
当PouchDB运行在Node.js上时,所给的任何其他选项都将传递给request
当adapter使用'leveldb'时(Node.js上默认为leveldb),所给的任何选项都会传递到levelup
创建案例:
var db = new PouchDB('dbname'); // or var db = new PouchDB('http://localhost:5984/dbname');
注:PouchDB默认端口为5984
参考链接:https://pouchdb.com/api.html
由于机翻,如有错误请指正,第一时间修改