真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Hyperledgercomposer如何實現(xiàn)查詢

小編給大家分享一下Hyperledger composer如何實現(xiàn)查詢,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

成都創(chuàng)新互聯(lián)公司是一家集做網站、成都做網站、網站頁面設計、網站優(yōu)化SEO優(yōu)化為一體的專業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網站建設服務。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設計最適合用戶的網站頁面。 合作只是第一步,服務才是根本,我們始終堅持講誠信,負責任的原則,為您進行細心、貼心、認真的服務,與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。

查詢使用Composer查詢語言和REST API的教程

本地查詢語言可以過濾使用條件返回的結果,并且可以在事務中調用該結果以執(zhí)行操作,例如更新或移除結果集上的資產。

查詢.qry在業(yè)務網絡定義的父目錄中的查詢文件()中定義。查詢包含WHERE子句,該子句定義選擇資產或參與者的標準。

1、更新業(yè)務網絡

    1.1 模型文件必須更新以包含事件和新事務,打開model的(.cto)文件tutorial-network,在它的基礎上添加

event TradeNotification {
    --> Commodity commodity
}

transaction RemoveHighQuantityCommodities {
}

event RemoveNotification {
    --> Commodity commodity
}

    1.2 打開交易處理器功能文件lib/logic.js,用下面的JavaScript替換事務邏輯

/**
 * Track the trade of a commodity from one trader to another
 * @param {org.example.mynetwork.Trade} trade - the trade to be processed
 * @transaction
 */
async function tradeCommodity(trade) {

    // set the new owner of the commodity
    trade.commodity.owner = trade.newOwner;
    let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');

    // emit a notification that a trade has occurred
    let tradeNotification = getFactory().newEvent('org.example.mynetwork', 'TradeNotification');
    tradeNotification.commodity = trade.commodity;
    emit(tradeNotification);

    // persist the state of the commodity
    await assetRegistry.update(trade.commodity);
}

/**
 * Remove all high volume commodities
 * @param {org.example.mynetwork.RemoveHighQuantityCommodities} remove - the remove to be processed
 * @transaction
 */
async function removeHighQuantityCommodities(remove) {

    let assetRegistry = await getAssetRegistry('org.example.mynetwork.Commodity');
    let results = await query('selectCommoditiesWithHighQuantity');

    for (let n = 0; n < results.length; n++) {
        let trade = results[n];

        // emit a notification that a trade was removed
        let removeNotification = getFactory().newEvent('org.example.mynetwork','RemoveNotification');
        removeNotification.commodity = trade;
        emit(removeNotification);
        await assetRegistry.remove(trade);
    }
}

    第一個功能tradeCommodity將更改商品(擁有新的所有者參與者)上的所有者財產,以傳入交易事務并發(fā)出通知事件。然后,它將修改的商品保留回用于存儲商品實例的資產注冊表中。

    第二個函數(shù)調用命名查詢'selectCommoditiesWithHighQuantity'(定義于queries.qry),它將返回數(shù)量大于60的所有商品資產記錄; 發(fā)出一個事件; 并從AssetRegistry中移除商品。

2、創(chuàng)建一個查詢定義文件

    2.1 在tutorial-network目錄中,創(chuàng)建一個名為的新文件queries.qry

    2.2 將以下代碼復制并粘貼到queries.qry

/** Sample queries for Commodity Trading business network
*/

query selectCommodities {
  description: "Select all commodities"
  statement:
      SELECT org.example.mynetwork.Commodity
}

query selectCommoditiesByExchange {
  description: "Select all commodities based on their main exchange"
  statement:
      SELECT org.example.mynetwork.Commodity
          WHERE (mainExchange==_$exchange)
}

query selectCommoditiesByOwner {
  description: "Select all commodities based on their owner"
  statement:
      SELECT org.example.mynetwork.Commodity
          WHERE (owner == _$owner)
}

query selectCommoditiesWithHighQuantity {
  description: "Select commodities based on quantity"
  statement:
      SELECT org.example.mynetwork.Commodity
          WHERE (quantity > 60)
}

3、重新生成您的業(yè)務網絡存檔

    在更改業(yè)務網絡中的文件后,必須將業(yè)務網絡重新打包為業(yè)務網絡存檔(.bna)并重新部署到Hyperledger Fabric實例。升級部署的網絡需要部署的新版本具有新的版本號

    3.1 在tutorial-network目錄中,打開package.json文件

    3.2 將版本屬性更新0.0.10.0.2

    3.3 使用命令行,導航到該tutorial-network目錄,執(zhí)行以下命令

composer archive create --sourceType dir --sourceName . -a tutorial-network@0.0.2.bna

4、部署更新后的業(yè)務網絡定義

    我們需要部署修改后的網絡,以成為區(qū)塊鏈上的最新版本!我們正在使用新創(chuàng)建的歸檔業(yè)務網絡歸檔文件來更新現(xiàn)有的已部署業(yè)務網絡; 這是我們在開發(fā)者教程中使用的相同的商業(yè)網絡名稱。

    4.1 切換到終端,將目錄切換到包含該文件夾的文件夾tutorial-network@0.0.2.bna

    4.2 運行以下命令安裝更新的業(yè)務網絡

composer network install --card PeerAdmin@hlfv1 --archiveFile tutorial-network@0.0.2.bna

    4.3 運行以下命令將網絡升級到新版本

composer network upgrade -c PeerAdmin@hlfv1 -n tutorial-network -V 0.0.2

    4.4 在繼續(xù)使用以下命令之前,檢查當前版本的業(yè)務網絡:

composer network ping -c admin@tutorial-network | grep Business

5、為更新的業(yè)務網絡重新生成REST API

    現(xiàn)在我們將整合最新更新的業(yè)務網絡和添加的查詢,并公開此業(yè)務網絡的REST API。

    5.1 使用以下命令啟動REST服務器

composer-rest-server

    5.2 輸入admin@tutorial-network卡名稱

    5.3 詢問是否在生成的API中使用名稱空間時,請選擇不使用名稱空間。

    5.4 當詢問是否保護生成的API時選擇。

    5.5 當詢問是否啟用事件發(fā)布時,選擇

    5.6 當被問及是否啟用TLS安全時,請選擇。

 Hyperledger composer如何實現(xiàn)查詢

6、測試REST API并創(chuàng)建一些數(shù)據(jù)

    6.1 打開Web瀏覽器并導航到http://localhost:3000/explorer。您應該看到LoopBack API Explorer,允許您檢查和測試生成的REST API。

Hyperledger composer如何實現(xiàn)查詢

    6.2 首先,在REST Explorer中點擊'Trader',然后點擊/ Trader上的'POST'方法,然后向下滾動到Parameter部分 - 依次創(chuàng)建以下Trader實例,內容是:

{
  "$class": "org.example.mynetwork.Trader",
  "tradeId": "TRADER1",
  "firstName": "Jenny",
  "lastName": "Jones"
}

   6.3 點擊“試用”來創(chuàng)建參與者。'響應代碼'(向下滾動)應該是200(SUCCESS),由于成功界面太長,所以需要三個截圖

    Hyperledger composer如何實現(xiàn)查詢

Hyperledger composer如何實現(xiàn)查詢

Hyperledger composer如何實現(xiàn)查詢

    6.4 按照上面的操作,重復執(zhí)行兩次,代碼不同,通過復制以下JSON創(chuàng)建第二個交易者

{
  "$class": "org.example.mynetwork.Trader",
  "tradeId": "TRADER2",
  "firstName": "Jack",
  "lastName": "Sock"
}

    6.5 第三個交易者

{
  "$class": "org.example.mynetwork.Trader",
  "tradeId": "TRADER3",
  "firstName": "Rainer",
  "lastName": "Valens"
}

    6.6 現(xiàn)在滾動到頂部,然后在REST Explorer中單擊“商品”對象

Hyperledger composer如何實現(xiàn)查詢

    6.7  點擊POST操作并向下滾動到參數(shù)部分:以與上述相同的方式,為所有者TRADER1和TRADER2創(chuàng)建兩個商品資產記錄

{
  "$class": "org.example.mynetwork.Commodity",
  "tradingSymbol": "EMA",
  "description": "Corn",
  "mainExchange": "EURONEXT",
  "quantity": 10,
  "owner": "resource:org.example.mynetwork.Trader#TRADER1"
}
{
  "$class": "org.example.mynetwork.Commodity",
  "tradingSymbol": "CC",
  "description": "Cocoa",
  "mainExchange": "ICE",
  "quantity": 80,
  "owner": "resource:org.example.mynetwork.Trader#TRADER2"
}

 Hyperledger composer如何實現(xiàn)查詢

7、使用商品交易REST API瀏覽器執(zhí)行查詢

    現(xiàn)在我們擁有資產和參與者,我們可以嘗試一些查詢,我們可以首先嘗試的最簡單的REST查詢是我們的命名查詢selectCommodities。展開“查詢”REST端點,您將看到我們在模型中定義的命名查詢。這些查詢現(xiàn)在作為REST查詢公開,并為其生成一個/ GET操作。請注意,查詢的描述(我們在模型定義中定義的)顯示在右側。

    7.1 執(zhí)行簡單的REST查詢

Hyperledger composer如何實現(xiàn)查詢

然后try it out 出現(xiàn)結果正是剛剛添加的那兩個如圖,

Hyperledger composer如何實現(xiàn)查詢

    7.2 執(zhí)行篩選的REST查詢

    展開查詢端點'selectCommoditiesByExchange'并滾動到'參數(shù)'部分。

    在'Exchange'參數(shù)中輸入'EURONEXT',點擊“試用”。

Hyperledger composer如何實現(xiàn)查詢

結果為:

Hyperledger composer如何實現(xiàn)查詢

    7.3 使用來自命名查詢的結果執(zhí)行事務更新

    最后,您會記得我們已經定義了一個簡單的查詢,用于在我們的查詢文件中篩選數(shù)量大于60的商品。在事務功能中使用時,查詢功能非常強大,因為使用查詢可以允許事務邏輯設置一組資產或參與者來執(zhí)行更新或創(chuàng)建刪除操作。

Hyperledger composer如何實現(xiàn)查詢

    我們selectCommoditiesWithHighQuantityremoveHighQuantityCommodities交易中使用查詢。如果您在REST資源管理器中執(zhí)行此/ GET操作,您會看到它僅選擇數(shù)量大于60的資產。

    Hyperledger composer如何實現(xiàn)查詢

    點擊

Hyperledger composer如何實現(xiàn)查詢

篩選結果:

Hyperledger composer如何實現(xiàn)查詢

看完了這篇文章,相信你對“Hyperledger composer如何實現(xiàn)查詢”有了一定的了解,如果想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網頁名稱:Hyperledgercomposer如何實現(xiàn)查詢
網頁URL:http://weahome.cn/article/jhecdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部