发新话题
打印

PouchDB - Javasacript离线web数据库

PouchDB - Javasacript离线web数据库

PouchDB是什么?

PouchDB是CouchDB的JavaScript实现。当运行在浏览器或者node.js中时,它的目标就是近乎完美的模仿CouchDB API。

官网:https://pouchdb.com/

安装PouchDB

1. 直接下载PouchDB js文件,引入:
代码:
<script src="path/to/pouchdb-6.1.2.min.js"></script>
2. Bower方式:
代码:
bower install pouchdb
<script src="bower_components/pouchdb/dist/pouchdb.min.js"></script>
3. npm方式:
代码:
npm install pouchdb
<script src="node_modules/pouchdb/dist/pouchdb.min.js"></script>
PouchDB数据库操作

1.新建目录,用于后续PouchDB相关操作:
代码:
mkdir ~/pouchdb
2. 新建index.html文件,引入PouchDB的js文件

3. 用python搭建一个简单的web站点服务:
代码:
# python 2
python -m SimpleHTTPServer 9001
# python 3
python -m http.server 9001
如果你有PHP5.4+版本,也可以使用php -S配置简单的服务站点:
代码:
php -S 127.0.0.1:9001
4. 在浏览器地址栏输入127.0.0.1:9001,调出开发者工具,打开控制台(console)
# 创建一个名为demo的数据库,输入:
代码:
var db = new PouchDB('demo')
# 看是否创建成功,输入 :
代码:
db
# 成功列出db实例的相关信息
代码:
Oe {__opts: Object, auto_compaction: undefined, prefix: "_pouch_", name: "demo", _adapter: "idb"…}
5. 数据操作:

A. 新增一条数据:

# _id 是必须的
代码:
var demo1 = {name : "Jack", age : 20, _id : "PersonOne"}
# 新增数据到PouchDB
代码:
db.put(demo1).then(function(result) {
    # 放入数据后,紧接着的操作
    console.log(result)
}).catch(function(err) {
    # 出现异常过后的处理
    console.log(err)
})
# 查看新增的数据
代码:
db.get('PersonOne').then(function(doc) { 
        console.log(doc);
}).catch(function(err) {
        console.log(err);
})
# 当然也可以用bulkDocs()新增多条数据

B. 删除一条数据:
代码:
db.get('PersonOne').then(function(doc) {
        db.remove(doc);
}).then(function(result) {
        console.log(result);
}).catch(function(err) {
        console.log(err);
})
# 删除一条数据不是正常的删除,在加入了_deleted并赋值为true,所以也可以通过用更新的方式将这个属性放入数据中

C. 更新一条数据:
代码:
db.get('PersonOne').then(function(doc) {
        return db.put({
                _id : 'PersonOne',
                _rev : doc._rev,
                name : "Jackson",
                age : doc.age
        })
}).then(function(result) {
        console.log(result);
}).catch(function(err) {
        console.log(err);
})
# 更新的时候 _rev 是必须的, 否则被抛出Document update conflict

D. 销毁demo数据库
代码:
db.destroy().then(function(result) {
        console.log(result);
}).catch(function(err) {
        console.log(err);
})

TOP

发新话题