javascript - 如何将包含函数的 JSON 对象添加到 S3 存储桶?
问题描述
我正在创建一个通过azimuth-js与以太坊区块链交互的 Node 应用程序。有多种方法必须按顺序运行(创建未签名的交易、签名、发送等),因为要进行实际的区块链交易。我正在使用 AWS Step Function 对这些进行排序,其中特定步骤在 AWS Lambdas 中执行代码。
Lambdas 的严格大小限制需要相对细粒度的拆分,为了可视化目的,我无论如何都想这样做。我使用的大多数 Azimuth 方法都需要传入由initContractsPartial创建的 contracts 对象。这非常大,超过了 Step Function 步骤之间可以直接作为输出和输入传递的限制。根据这个 Stack Overflow answer,最好的解决方案是将数据存储在 S3 存储桶中并从那里提取。
我已经这样做了,JSON.stringify
在上传之前使用。但是当我把它拉出来时,对象中的方法就消失了。以前,methods 对象具有以下形式(删除了某些敏感数字):
methods: {
escapeRequestsIndexes: [Function: bound _createTxObject],
<SOME_NUMBERS_HERE>: [Function: bound _createTxObject],
'escapeRequestsIndexes(uint32,uint32)': [Function: bound _createTxObject],
votingFor: [Function: bound _createTxObject],
<SOME_NUMBERS_HERE>: [Function: bound _createTxObject],
'votingFor(address,uint256)': [Function: bound _createTxObject],
...
}
从 S3 存储桶中取出后,变成:
methods: {}
似乎JSON.stringify
在字符串化之前评估它们并使它们消失。具体来说,包含方法的 JSON 对象的对象现在是一个空对象。原始较大对象的非功能部分很好。
我尝试了其他方法将其转换为 S3-ready 形式,例如创建一个Buffer
或使用fs
创建一个文件然后上传,但同样的事情总是会发生。
我一直无法在网上找到解决方案。我怎样才能实现我的目标?
解决方案
推荐阅读
- php - 如何清理被黑的 Drupal 站点
- css - 将样式应用于除第一种类型的元素之外的所有元素
- django - 在相关对象中批量创建
- google-signin - 谷歌登录谷歌助手的对话流程给出 500 内部服务器错误?
- webrtc - WebRTC 视频流错误 - scaledrone
- python - 用python制作黑白文件夹
- java - Spring Data JPA - 带有规范的查询(加入和输入)
- isabelle - Isabelle:如果一个会话需要多个父会话怎么办?
- sqlite - 在 sqliteman 中加载扩展
- javascript - 更改后无法加载 Django javascript