从零到英雄 NFT 示例 cli 到 js workflo

zero to hero NFT example cli to js workflo

我正在尝试按照 cli 命令描述的接近零到英雄 nft 示例进行操作。我使用 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 参数,但我看到的任何调用合同参数的示例都没有提供该选项。与我的代码登录方式有关吗?

这个项目应该可以回答有关从前端调用合约的大部分问题

https://github.com/Learn-NEAR/starter--near-api-js

通常,调用contract的方法时,还需要在方法中指定需要的参数。在这种情况下,它是 account_id,我们需要将它添加为一个对象(即使合约签名将字符串作为参数),以便像这样的合约调用:

// account_id can be your testnet account, e.g. johnonym.testnet
await this.nft_contract.nft_metadata({account_id: 'your-account-id'})

但是,这个方法尤其不需要任何参数开头。

原来我没有成功继承系统变量,所以没有帐户 ID。现在一切似乎都在工作。感谢最终导致我找到错误的指示。