如何用rpc get_table_rows 根据标准其它索引字段查询数据,大佬们帮忙解答一下如何根据如下表中owner字段查询dgoodstest13账户的数据

一级用户组 梦的飞翔 1月前 46

表定义如下

        TABLE dgood {
        uint64_t id;
        uint64_t serial_number;
        name owner;
        name category;
        name token_name;
        std::optional<string> relative_uri;

        uint64_t primary_key() const { return id; }
        uint64_t get_owner() const { return owner.value; }

    };

    using dgood_index = multi_index< "dgood"_n, dgood,
        indexed_by< "byowner"_n, const_mem_fun< dgood, uint64_t, &dgood::get_owner> > >;

表中数据

test@ubuntu:~$ cleos get table  dgoods dgoods  dgood
{
  "rows": [{
      "id": 0,
      "serial_number": 1,
      "owner": "dgoodstest15",
      "category": "dgoodsmovie1",
      "token_name": "dgoodsmormb1",
      "relative_uri": "url"
    },{
      "id": 1,
      "serial_number": 1,
      "owner": "dgoodstest12",
      "category": "busticket",
      "token_name": "bustoken",
      "relative_uri": "http:://22222.com"
    },{
      "id": 2,
      "serial_number": 2,
      "owner": "dgoodstest12",
      "category": "busticket",
      "token_name": "bustoken",
      "relative_uri": "http:://22223.com"
    },{
      "id": 4,
      "serial_number": 4,
      "owner": "dgoodstest13",
      "category": "busticket",
      "token_name": "bustoken",
      "relative_uri": "http:://11114.com"
    }
  ],
  "more": false
}

查询内容: 合约用dgoods用户部署 用如下命令可以查询到全部数据:

curl -X POST --url http://127.0.0.1:8888/v1/chain/get_table_rows  -d '{
  "scope": "dgoods",
  "code": "dgoods",
  "table": "dgood",
  "json": true
}' | json_pp

根据表中定义字段owner查询dgoodstest13账户的数据: 查询rpc 命令如下,查询不到数据,:

test@ubuntu:~$ curl -X POST --url http://127.0.0.1:8888/v1/chain/get_table_rows  -d '{
  "scope": "dgoodstest15",
  "code": "dgoods",
  "table": "dgood",
  "index_position": 2
  "key_type": name
  "json": true
}' | json_pp

大佬们帮忙看一下如何根据表中owner字段查询dgoodstest13账户的数据?

还没有人收藏过本帖~
最新回复 (3)
  • 管理员组 Surou 1月前
    0 引用 2
    附加下你合约内数据是怎么写入的,也就是添加记录的scope 是什么

    看你最后一个查询写的
    ```shell
    test@ubuntu:~$ curl -X POST --url http://127.0.0.1:8888/v1/chain/get_table_rows -d '{ "scope": "dgoodstest15",  //确认下这个scope 

    ```
  • 一级用户组 梦的飞翔 1月前
    0 引用 3
    数据写入:合约部署账户dgoods    
    dgood_index dgood_table( get_self(), get_self().value);
        auto dgood_id = dgood_table.available_primary_key();
        if ( relative_uri.empty() ) {
            dgood_table.emplace( issuer, [&]( auto& dg) {
                dg.id = dgood_id;
                dg.serial_number = issued_supply + 1;
                dg.owner = to;
                dg.category = category;
                dg.token_name = token_name;
            });
        }
  • 一级用户组 梦的飞翔 1月前
    1 引用 4
    可以用如下命令:
    test@ubuntu:~$ cleos get table dgoods dgoods dgood --key-type i64 --index 2 -L "dgoodstest13" -U "dgoodstest13"

    curl -X POST --url http://127.0.0.1:8888/v1/chain/get_table_rows  -d '{
      "scope": "dgoods",
      "code": "dgoods",
      "table": "dgood",
      "index_position": 2,
      "key_type": "i64",
      "upper_bound": "dgoodstest15",
      "lower_bound": "dgoodstest15",
      "json": true
    }' | json_pp
返回