首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:查询[对象]失败: wasm执行失败

错误:查询[对象]失败: wasm执行失败
EN

Stack Overflow用户
提问于 2022-07-18 05:07:23
回答 1查看 108关注 0票数 0

我很难解决这个错误。我现在试图得到一个产品数据列表,以矢量形式存储在地图中。

代码语言:javascript
复制
#[near_bindgen]
#[derive(Serialize, Deserialize, Debug, BorshDeserialize, BorshSerialize)]
#[serde(crate = "near_sdk::serde")]
pub struct Room {
    room_id: U64,
    name: String,
    image: String,
    description: String,
    location: String,
    price: U128,
    owner: AccountId,
}

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize)]
pub struct Rooms {
    pub rooms: UnorderedMap<U64, Room>,
}

impl Default for Rooms {
    fn default() -> Self {
        Self {
            rooms: UnorderedMap::new(b"r".to_vec()),
        }
    }
}

#[near_bindgen]
impl Rooms {
    pub fn set_room(
        &mut self,
        name: String,
        image: String,
        description: String,
        location: String,
        price: U128,
    ) -> U64 {
        let timestamp = env::block_timestamp();
        let convert_timestamp: U64 = timestamp.into();
    
        let account_id = env::signer_account_id();

        self.rooms.insert(
            &convert_timestamp.clone(),
            &Room {
                room_id: convert_timestamp,
                name,
                image,
                description,
                location,
                price,
                owner: account_id,
            },
        );
        convert_timestamp
    }

    pub fn get_room(&self, room_id: U64) -> Room {
        self.rooms.get(&room_id).expect("No Room")
    }

    pub fn get_rooms(&self) -> Vec<Room> {
        Vec::from_iter(self.rooms.values())
    }
}

当我调用get_rooms时会发生错误。

$ near view dev-1658072311649-16892075058144 get_rooms

代码语言:javascript
复制
    View call: dev-1658072311649-16892075058144.get_rooms()
    An error occured
    Error: Querying [object Object] failed: wasm execution failed with error: FunctionCallError(HostError(GuestPanic { panic_msg: "Cannot deserialize element" })).
    {
      "block_hash": "54p5pS8xrzi7GWzv5YcgpNT33f7RqYdR7sUzHaTdzsqf",
      "block_height": 95181885,
      "error": "wasm execution failed with error: FunctionCallError(HostError(GuestPanic { panic_msg: \"Cannot deserialize element\" }))",
      "logs": []
    }
        at JsonRpcProvider.query (/Users/user/.config/yarn/global/node_modules/near-api-js/lib/providers/json-rpc-provider.js:123:19)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async Account.viewFunction (/Users/user/.config/yarn/global/node_modules/near-api-js/lib/account.js:366:24)
        at async exports.callViewFunction (/Users/user/.config/yarn/global/node_modules/near-cli/index.js:98:48)
        at async Object.handler (/Users/user/.config/yarn/global/node_modules/near-cli/utils/exit-on-error.js:52:9)
    TypedError: Querying [object Object] failed: wasm execution failed with error: FunctionCallError(HostError(GuestPanic { panic_msg: "Cannot deserialize element" })).
    {
      "block_hash": "54p5pS8xrzi7GWzv5YcgpNT33f7RqYdR7sUzHaTdzsqf",
      "block_height": 95181885,
      "error": "wasm execution failed with error: FunctionCallError(HostError(GuestPanic { panic_msg: \"Cannot deserialize element\" }))",
      "logs": []
    }
        at JsonRpcProvider.query (/Users/user/.config/yarn/global/node_modules/near-api-js/lib/providers/json-rpc-provider.js:123:19)
        at processTicksAndRejections (node:internal/process/task_queues:96:5)
        at async Account.viewFunction (/Users/user/.config/yarn/global/node_modules/near-api-js/lib/account.js:366:24)
        at async exports.callViewFunction (/Users/user/.config/yarn/global/node_modules/near-cli/index.js:98:48)
        at async Object.handler (/Users/user/.config/yarn/global/node_modules/near-cli/utils/exit-on-error.js:52:9) {
      type: 'UntypedError',
      context: undefined
    }

为什么只有当我将产品信息作为向量得到时,才会得到关于序列化的错误?

所有其他功能都能正常工作。

如果你知道原因和解决办法,我想知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 12:50:35

我刚刚测试了你的代码,它对我很好。您可以尝试在dev-1658147947569-44192518546131中调用该方法。

确保您使用的是最新的近sdk (4.0),并且您正在从正确的位置导入所有内容:

代码语言:javascript
复制
use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize};
use near_sdk::{near_bindgen, env, AccountId, collections::{UnorderedMap}};
use near_sdk::json_types::{U64, U128};
use near_sdk::serde::{Serialize, Deserialize};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73017542

复制
相关文章

相似问题

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