首页 > 解决方案 > 在超级账本结构链码中合并 2 个对象

问题描述

嗨,我是超级账本结构的新手。像每个人一样,我通过文档设置了织物链,并使用织物样本在我的 ubuntu 上工作。我需要创建需要 2 个对象并且应该定义关系的链代码。在 fabcar 中,应用程序端得到了很好的解释,但是我在合并 2 个对象时遇到了问题,因为 fabcar 中只使用了一个对象(汽车)

现在我已经在我的链代码中创建了这两个对象,就像使用不同的函数一样

async createItem(ctx,id ,Name, status, description, owner) {
    

    const item = {
        Name,
        status,
        description,
        owner,
    };

    await ctx.stub.putState(id, Buffer.from(JSON.stringify(item)));
   
}

现在我遇到的问题是当我必须按照 fabcar 函数中的描述查询它们时

async queryAllCars(ctx) {
    const startKey = '';
    const endKey = '';
    const allResults = [];
    for await (const {key, value} of ctx.stub.getStateByRange(startKey, endKey)) {
        const strValue = Buffer.from(value).toString('utf8');
        let record;
        try {
            record = JSON.parse(strValue);
        } catch (err) {
            console.log(err);
            record = strValue;
        }
        allResults.push({ Key: key, Record: record });
    }
    console.info(allResults);
    return JSON.stringify(allResults);
}

在这里你可以看到三个没有汽车标识符的地方它专门对链码说需要所有汽车条目..所以我想知道如果我们在链码中有 2 个对象如何完成,所以我可以具体告诉链码给我物品或客户。很抱歉问了这样一个基本问题,但请帮助我。

标签: javascripthyperledger-fabrichyperledgerhyperledger-chaincode

解决方案


在链码中,您可以轻松地做到这一点。我所做的是添加开始键和结束键

CUST0 (startkey) CUST99999999999 (endkey)

在客户再生时,您必须添加类似的密钥并检查订单。同样,如果您正在注册项目,您可以添加 ITEM0 - ITEM999999999

这个数字 9999999999 只是为了获取特定对象的所有餐馆


推荐阅读