我正在使用testnet使用近api-js (Nextjs)来调用contract。当我在没有批准事务的情况下调用该方法(没有存款或经常帐户部署了合同调用),近api-js将返回合同方法的结果,但当我从另一个近的帐户调用时(需要切换到钱包屏幕以批准事务),近api-js将返回transactionHash。我使用这个transactionHash来检查资源管理器,得到的结果是我的合同仍然返回正确的结果,但是它似乎没有将这个结果发送给我的客户端。有人能告诉我发生了什么以及如何解决吗?
下面是我的示例transactionHash: 8NHCjNkM6VDnSyMg43gzwngNPNZTDCnvDSTtQj5QsM-当调用方法从近-cli或近-api-js没有定金选项时没有问题。下面是我的前端代码
contract?.init_new_event?.(
{
title: event_name,
location: 'Hanoi',
description: des,
privacy: [],
cover_image: rootCid,
type: parseInt(event_type),
start_date,
end_date,
},
100000000000000,
depositAmount,
).then((res) => {
if (res) {
router.push(`/event/event-detail?id=${res}`);
} else {
onShowResult({
type: 'error',
msg: 'Creat event failure',
});
}
}).catch((err) => {
onShowResult({
type: 'error',
msg: String(err),
});
});当我打电话给这个合同的所有者帐户时,我收到了这样的回复:
"nMX4ZeyxLTK9ZYyJmA9FhR7Y8zgieLsvnc9VeJhGtRVsAm82tnzMG"但是当我接到另一个帐户的电话时,我刚刚收到了transactionHash,例如
transactionHashes=EgSmzhmtMHr6WNmtLpJaa7W9qLn6PzdHEzK2ST13vGgA您可以在近资源管理器上看到,合同方法仍然正常工作:https://explorer.testnet.near.org/transactions/BQVMve8FtgQ8sqBDyzS3FrTR5buYy4qmuCWcCVD7K8KE
发布于 2022-08-20 16:11:18
当您调用api (附加保证金)时,您只能检查txHash以了解tx成功与否,您不能检查来自智能契约的响应。=>解决方案:将存款api与您的主动作api分开,用户在调用main api之前必须先存款,然后才能正常地获得对main-action的响应。
https://stackoverflow.com/questions/71087009
复制相似问题