CouchDB的简单使用

一、安装CouchDB

     到官网下载CouchDB,在windows下安装CouchDB较为简单,略过。

      安装完后,确认CouchDB在运行,然后在浏览器访问http://127.0.0.1:5984/,正常情况不网页上显示

   

{
    "couchdb":"Welcome",
    "version":"2.1.1",
    "features":[
        "scheduler"
    ],
    "vendor":{
        "name":"The Apache Software Foundation"
    }
}

   与CouchDB交互:

       1.访问http://127.0.0.1:5984/_utils/去加载Fauxton,通过Fauxton可与CouchDB交互

       2.使用curl实用程序和CouchDB交互

                   安装curl实用程序。如果下载的是安装版curl默认情况下会自动配置环境变量,如果是解压版请自行配置环境变量(即把安装目录的bin路径添加到path下)。完成后在cmd中输入curl,有正常反应则表示安装成功

二、CouchDB

      1.创建数据库

        由于通过Fauxton操作CouchDB比较简单,这里不详细介绍这种方法。主要介绍通过curl操作CouchDB。

         可以通过使用PUT方法通过curl实用程序向服务器发送HTTP请求,在CouchDB中创建数据库。 

            

curl -X PUT http://127.0.0.1:5984/albums

        CouchDB返回:

{"ok":true}

          这样一个名为albums的数据库就创建成功。-X是告诉curl发送什么请求(GET、PUT、DELETE、POST)。默认情况是发送GET请求。如

       

curl -X GET http://127.0.0.1:5984

curl  http://127.0.0.1:5984

效果是一样的。如果想知道请求响应的详细信息可加上-v(例如:curl -vX GET)。

       2.删除数据库

             

curl -X DELETE http://127.0.0.1:5984/albums

         CouchDB返回:

{"ok":true}

 

       3.创建文档

      

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d '{"title":"There is Nothing Left to Lose","artist":"Foo Fighters"}'

     

6e1295ed6c29495e54cc05947f18c8af是文档id(建议用UUID或GUID)。-d后面是请求要发送的数据,要求Field-Value对的形式。
如果你没有UUID可通过curl -X GET http://127.0.0.1:5984/_uuids获得。如果你需要更多UUID,可以通过?count=10参数获得10个UUID,或者获取你想要的数目。

     CouchDB返回:

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"1-2902191555"}

     rev,表示修订ID。 每次修改(更新或修改)文档时,CouchDB都会生成_rev值。如果要更新或删除文档,CouchDB希望您包括要更改的版本的_rev字段。此机制用于确保并发控制。

注意:在windows下创建文档应这样输入:

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af -d "{\"title\":\"There is Nothing Left to Lose\",\"artist\":\"Foo Fighters\"}"

否则会报如下错误:

{"error":"bad_request","reason":"invalid UTF-8 JSON"}

参考:https://andrewlocatelliwoodcock.wordpress.com/2011/05/11/curl-returning-invalid-utf-8-json-error-from-couchdb-on-windows-although-json-is-correct/

      3.更新文档

        可通过curl -X GET http://127.0.0.1/albums/6e1295ed6c29495e54cc05947f18c8af查到修订版本id再执行

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af \
     -d '{"_rev":"1-2902191555","title":"There is Nothing Left to Lose","artist":"Foo Fighters","year":"1997"}'

  _rev为从文档中查出来的修订版本id。

    CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"2-8aff9ee9d06671fa89c99d20a4b3ae"}

 

     4.删除文档

  

curl -X DELETE http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af?rev=4-d56957735aa2d7f352044103f39912c9

CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"5-5c8ce4ce0709421945867b0e05cb19c4"}

      验证删除:

curl -X GET http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af

CouchDB返回

{"error":"not_found","reason":"deleted"}

   

5.附加文件

    

curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg?rev=3-1b29c1219b6d80a8f7ded1ddfebb69ed --data-binary @E:\artwork.jpg -H "Content-Type:image/jpg"

上述命令通过PUT请求将E:\artwork.jpg附加到albums/6e1295ed6c29495e54cc05947f18c8af中,并命名为artwork.jpg。--data-binary @是告诉curl读文件内容到HTTP请求体, -H告诉CouchDB,我们上传的是JPEG文件。

CouchDB返回

{"ok":true,"id":"6e1295ed6c29495e54cc05947f18c8af","rev":"4-d56957735aa2d7f352044103f39912c9"}

可通过http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/artwork.jpg访问附加文件。

再次请求文档

     

curl http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af

CouchDB返回

    

{
    "_id": "6e1295ed6c29495e54cc05947f18c8af",
    "_rev": "3-131533518",
    "title": "There is Nothing Left to Lose",
    "artist": "Foo Fighters",
    "year": "1997",
    "_attachments": {
        "artwork.jpg": {
            "stub": true,
            "content_type": "image/jpg",
            "length": 52450
        }
    }
}

 

 

 

参考链接:

             1.http://docs.couchdb.org/en/2.1.1/intro/tour.html

             2.http://docs.couchdb.org/en/2.1.1/intro/api.html

             3.https://andrewlocatelliwoodcock.wordpress.com/2011/05/11/curl-returning-invalid-utf-8-json-error-from-couchdb-on-windows-although-json-is-correct/

      

    

转载于:https://www.cnblogs.com/flythinking/p/8043569.html

### Hyperledger Fabric 使用 CouchDB 作为状态数据库的配置和操作指南 #### 配置 CouchDB 作为状态数据库 为了使 Peer 节点能够使用 CouchDB 作为状态数据库,需要修改 `core.yaml` 文件中的相应设置[^5]。具体来说: - 设置 `stateDatabase` 参数为 `CouchDB`。 - 提供 CouchDB 连接字符串。 以下是 `core.yaml` 中的相关配置片段示例: ```yaml peer: stateDatabase: totalQueryLimit: 10000 couchdbConfig: couchDBAddress: "127.0.0.1:5984" username: "" password: "" ``` 对于 Kubernetes 环境下的部署,可以参考 test-network-k8s 示例来构建包含 CouchDB 的 Fabric 网络环境[^3]。 #### 初始化并启动 CouchDB 数据库 确保安装并启用了 CouchDB 实例,并开放了必要的端口访问权限以便与 Fabric Peers 建立连接。当首次启动时,默认情况下会创建一个名为 `_users` 的内置数据库用于存储用户认证信息。 #### 创建链码表结构 为了让 CouchDB 更好地支持复杂查询需求,在设计链码时应当考虑采用 JSON 文档的形式表示数据对象。这不仅允许执行简单的键值查找,还使得通过视图函数实现更高级别的聚合运算成为可能[^1]。 例如,下面展示了一段 Go 语言编写的简单链码逻辑,其中定义了一个商品资产的数据模式: ```go type Asset struct { ObjectType string `json:"docType"` ID string `json:"ID"` Color string `json:"color"` Size int `json:"size"` Owner string `json:"owner"` } ``` 一旦上述类型的实例被提交至账本之后,就可以利用 CouchDB 查询接口来进行多字段检索或范围扫描等操作。 #### 执行富格式查询 假设已经有一系列的商品记录存在于账本之中,现在想要获取特定颜色范围内所有物品的信息列表。此时可以通过 RESTful API 向目标通道发送如下所示的请求体: ```json { "selector": { "docType": {"$eq": "asset"}, "color": {"$in": ["red", "blue"]} } } ``` 此命令将会返回符合条件的结果集给客户端应用处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值