備忘69

個人的な備忘録です。細かいtips多め。


Hyperledger Composer Queryの中でORDER BY が使えない

Hyperledger Composerでクエリ

Hyperledger Composer ではSQLライクにブロックチェーンネットワークから特定のアセットや参加者を取得するためのクエリが準備できる。
(クエリを使う場合、channelに参加するpeerのDBをデフォルトのlevelDBからCouchDBに変更しておく必要がある。)
クエリは queries.qry の中に以下のように定義する。

query sampleQuery{
    description: "sampleQuery"
    statement:
        SELECT jp.org.acme.sampleAsset
    WHERE (_$parameter < fieldName)
              ORDER BY [fieldName ASC]
                    LIMIT 25 
}

ただし、しばらくORDER BYを使うとエラーとなっていた。

解決法

channelに参加しているpeerに紐付いたCouchDBのコンテナ内で以下のコマンドを叩けばOK.

$ curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d ' {   "index": {     "fields": [       {         "data.<FIELD_NAME>": "<asc or desc>"       }     ]   },   "type": "json" }' 'http://localhost:5984/<CHANNEL_NAME>/_index'

参考

stackoverflow.com