我试图遵循接近零到英雄nft的例子,这是用cli命令描述的。我使用cli命令,但很难将其转换为javascript。特别是,我试图简单地调用nft合同上的一个视图脚本,该脚本已经部署到子帐户中。所以我加载了这个账户;
this.nft_contract = await this._near.near.loadContract(this.nft_contract_id, {
viewMethods: ["nft_metadata","nft_token","nft_payout","nft_is_approved","nft_tokens","nft_supply_for_owner","nft_tokens_for_owner"],
// Change (“call”) methods can modify the state. But you don't receive the returned value when called.
changeMethods: ["new_default_meta","new","nft_mint","nft_transfer","nft_transfer_call","nft_transfer_payout","nft_approve","nft_revoke","nft_revoke_all"],
sender: window.walletConnection.getAccountId()
});然后调用视图函数nft_metadata,如零到英雄示例所示,但使用js,如下所示;
await this.nft_contract.nft_metadata()我得到了错误字段account_id,我只能假设它与后端rpc调用有关。cli示例显式地声明了account_id参数,但我看到的任何调用契约参数的示例都不提供该选项。是否与我的代码如何登录有关?
发布于 2022-01-23 19:21:10
这个项目应该回答大部分关于直接打电话给你的合同的问题。
发布于 2022-01-24 12:29:40
通常,在调用契约上的方法时,还需要在方法中指定正则参数。在本例中,它是account_id,我们需要将它添加为对象(即使契约签名接受一个字符串作为参数),如下所示:
// account_id can be your testnet account, e.g. johnonym.testnet
await this.nft_contract.nft_metadata({account_id: 'your-account-id'})但是,这个方法首先不需要任何参数。
发布于 2022-01-25 16:19:33
结果,我没有成功地继承一个系统变量,所以没有帐户id。现在一切似乎都正常了。谢谢你的指点,我终于找到了窃听器。
https://stackoverflow.com/questions/70825156
复制相似问题