##概述
通过提前调用getVaultFilters方法解决了/vault-query接口在不调用/vault-filter接口失效的问题,同时在corda/node-server库提了pr
问题描述
项目中使用一个开源区块链浏览器去查看节点的state(可以理解为区块链节点逻辑存储上的数据)
我们通过使用/vault-query去获取所有state,这个接口有一个filter参数,其中有一个字段叫stateTypes,如果这个字段为空时,可以查到数据;如果不为空,则显示查到数据为null。
发现问题
发现代码中使用contractStateClassMap去获取类,这个hashmap的key是一个string, 因为filter的stateTypes是一个string,value对应的是一个Class,获取对应string的同名的class,然后从中去筛选出来这个相应的class。
getVaultFilters()方法专门先读一遍区块链节点数据库中的数据,不同功能的数据是不一样的,然后把里面的所有的filter全部都装进这个hashmap里面。
但是这个方法只有在调用/vault-filter接口才被调用。
导致不调这个方法直接调hashmap的话为空
此外如果不使用statetype这个过滤字段的话,是能够成功返回数据的,因为hashmap为空不影响
但是如果statetype不为空,则会显示查到的数据为null
解决问题
在hashmap添加判断,如果