首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过`.entries`查询部分物料的基材入库

如何通过`.entries`查询部分物料的基材入库
EN

Stack Overflow用户
提问于 2020-09-14 01:37:00
回答 1查看 130关注 0票数 0

当我知道用于存储数据的ID列表时,如何通过.entries查询storage

来自decl_storage的代码片段

代码语言:javascript
复制
/// PoE Proofs
Proofs get(fn proofs): map hasher(blake2_128_concat) GenericId=> ProofInfo<Proof, T::AccountId, T::BlockNumber>;

我正在尝试获取仅有的几个条目的typescript代码

代码语言:javascript
复制
type IncomingParam = [StorageKey, ProofInfo]
type SnGenericIds = GenericId[]
export async function getAll (
  items: SnGenericIds = []
): Promise<IncomingParam[]> {
  const api = getApi()
  return await api.query.poe.proofs.entries(items)
}
// items is  [ '0x6261666b313332313365616465617364' ]

当我在浏览器中使用polkadot.js应用程序并传递该ID时,我得到了记录,并且只有一条,上面的TS代码返回所有记录,我已经检查了https://polkadot.js.org/api/start/api.query.other.html#map-keys-entries,如果我正确理解了上面的代码应该。工作

我知道multi,但我想使用这种方法来获得全部或部分,这可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 22:43:36

只有在double_map是与double_map的第一个参数匹配的单个字符串时,才能使用和过滤args

上面的rust代码没有过滤功能,因此RPC和API将检索所有条目。

所以rust代码如下所示:

代码语言:javascript
复制
/// PoE Proofs
pub Proofs get(fn proofs): double_map hasher(blake2_128_concat) GenericId, hasher(twox_64_concat) T::AccountId => ProofInfo<Proof, T::AccountId, T::BlockNumber>;

这允许使用以下方法进行过滤

代码语言:javascript
复制
api.query.poe.proofs.entries('0x1231233132312')

欲了解更多信息,请登录:here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63873698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档