Corda 从特定节点查询数据';s数据库
我正在使用客户查询做一些报告之类的事情。为此,我必须从各自节点的数据库中获取数据。但是,我不知道如何做。它通常会获取所有数据,而不考虑节点。让我们以IOU CorDapp()为基础进行示例。有几种方法可以做到这一点: 1。通过API端点 此端点将返回节点上存储的任何IOU,其值高于Corda 从特定节点查询数据';s数据库,corda,Corda,我正在使用客户查询做一些报告之类的事情。为此,我必须从各自节点的数据库中获取数据。但是,我不知道如何做。它通常会获取所有数据,而不考虑节点。让我们以IOU CorDapp()为基础进行示例。有几种方法可以做到这一点: 1。通过API端点 此端点将返回节点上存储的任何IOU,其值高于minValue: @GET @Path("ious-above-value") @Produces(MediaType.APPLICATION_JSON) fun getIOUsAboveValue(@QueryPa
minValue
:
@GET
@Path("ious-above-value")
@Produces(MediaType.APPLICATION_JSON)
fun getIOUsAboveValue(@QueryParam("minValue") minValue: Int): List<IOUState> {
val results = builder {
val currencyIndex = IOUSchemaV1.PersistentIOU::value.greaterThan(minValue)
val customCriteria = QueryCriteria.VaultCustomQueryCriteria(currencyIndex)
rpcOps.vaultQueryBy<IOUState>(customCriteria)
}
val stateAndRefs = results.states
return stateAndRefs.map { stateAndRef -> stateAndRef.state.data }
}
fun main(args: Array<String>) {
require(args.size == 1) { "Usage: ExampleClientRPC <node address>" }
val nodeAddress = NetworkHostAndPort.parse(args[0])
val client = CordaRPCClient(nodeAddress)
// Can be amended in the com.example.MainKt file.
val proxy = client.start("user1", "test").proxy
val results = builder {
val currencyIndex = IOUSchemaV1.PersistentIOU::value.greaterThan(3)
val customCriteria = QueryCriteria.VaultCustomQueryCriteria(currencyIndex)
proxy.vaultQueryBy<IOUState>(customCriteria)
}
val stateAndRefs = results.states
val states = stateAndRefs.map { stateAndRef -> stateAndRef.state.data }
}
3。直接通过节点的数据库
您可以按照此处的说明登录到节点的数据库:。然后,您将能够直接对节点的数据库执行SQL查询