有没有一种方法可以使用 hyperledger fabric 在 couchDB 中为不同的合同设置不同的索引

Is there a way to set different indexes for different contracts in couchDB with hyperledger fabric

我将 hyperledger fabric 1.4 与 CouchDB 2.3.1 和 2 个合同一起使用,但我在设置合同中的索引时遇到问题,也不知道如何将索引上传到 couchDB。

这些是我的索引:

META-INF/statedb/couchdb/indexes/carIndex.json

{
    "index": {
        "fields": [
            "idCar",
            "date"
        ]
    },
    "ddoc": "indexIdCarDoc",
    "name": "indexIdCar",
    "type": "json"
}

META-INF/statedb/couchdb/indexes/bikeIndex.json

{
    "index": {
        "fields": [
            "idBike",
            "date"
        ]
    },
    "ddoc": "indexIdBikeDoc",
    "name": "indexIdBike",
    "type": "json"
}

如何告诉 hyperledger 为 mychannel_carchaincode table 设置第一个索引,为 mychannel_bikechaincode table 设置第二个索引?

另外,我的链码是用打字稿写的,我的 META-INF/statedb/couchdb/indexes 文件夹应该在 dist 文件夹中吗?这就是为什么我在升级后看不到 couchdb 中的索引的原因?或者索引只能在实例化时上传?

谢谢

当你给出链码命令时,你必须使用“use_index”参数并且必须告诉链码它将为这个命令使用什么索引。

Link 和示例: https://hyperledger-fabric.readthedocs.io/en/release-2.2/couchdb_tutorial.html#use-best-practices-for-queries-and-indexes

我遇到了同样的问题。我的超级账本版本是 1.4.7,我正在使用 IBM Blockchain Extesion for VS Code。 当我把这个文件夹放在我项目的 lib 文件夹中时我解决了。

lib/META-INF/statedb/couchdb/indexes/index.json

升级智能合约后, 为确保有效,请转到终端并使用此 docker 命令:

docker logs 39f4adec6057 2>&1 | grep "CouchDB index" 其中 39f4adec6057 是对等容器

如果工作这个显示类似:

[couchdb] CreateIndex -> INFO 0fc 使用设计文档 [_design/tipoAtivoDoc]

在状态数据库 [mychannel_integra-chaincode] 中创建了 CouchDB 索引 [tipoAtivo]

如果您使用 Typescript,这将被编译:确保将此文件夹复制到 dist 文件夹。为此,您可以在您的包 JSON 中添加一个 postbuild "postbuild": "cp -av ./META-INF dist/lib/META-INF",