【发布时间】:2022-01-17 12:49:30
【问题描述】:
我可以散列在这种情况下由 demoId 表示的 mongodb Id 吗?如果可以,解决方案是什么?谢谢
我尝试了以下方法(知道 mongodb Id 是 12 字节)但得到错误
当我在soliditySha3 中将类型设置为bytes12 时,我得到以下错误invalid bytes12 for 0x....
当我在soliditySha3 中将类型设置为bytes16 时,我得到以下错误invalid bytes16 for 0x...
const demoIdHex = web3 && web3.utils.utf8ToHex(demoId!);
console.log("demoIdHex", demoIdHex);
const orderHash =
web3 &&
web3.utils.soliditySha3(
{ type: "bytes16", value: demoIdHex },
{ type: "address", value: account.data }
); // THIS FUNCTION FAILED
console.log("orderHash", orderHash);
【问题讨论】:
-
你检查过
web3.utils.utf8ToHex(demoId!)返回的内容吗? -
嗨@Joe,它返回 0x363162343665343234666136643333653736373233613665
-
这是 24 个字节。
demoId是否包含字符串而不是 objectid? -
我明白了。这就说得通了。我将整个 mongoId 作为字符串传递给 utf8ToHex 函数。这可能会导致错误。我只是尝试将字符串 id 转换为 ObjectId 并将其传递给 utf8ToHex 函数,但它不起作用。 utf8ToHex 函数只接受字符串