javascript - 如何从 Parent 类中的映射中访问子结构?
问题描述
我有一个客户结构,并且在结构内我有一个映射到另一个名为 CartItem 的结构。我有一个 addToCart 函数,我想在 Customer 结构中添加一个新的 CartItem 作为子结构。这是我在 Solidity 合约上的代码。我想从我的 Javascript 文件中的子结构访问子结构。像这个 customer[i].cartItems 吗?因为我似乎无法访问子结构
// CUSTOMER
struct Customer {
uint256 id;
address owner;
string name;
string addressLocation;
string phone;
mapping(uint256 => CartItem) cartItems;
uint256 itemCount;
}
mapping(uint256 => Customer) customers;
uint256 public customersCount;
struct CartItem {
uint256 id;
uint256 productId;
}
function addToCart(uint256 _id) public {
uint256 i = 0;
for (i = 0; i <= customersCount; i++) {
if (customers[i].owner == msg.sender) {
customers[i].cartItems[customers[i].itemCount].push(
CartItem(customers[i].itemCount, _id)
);
(customers[i].itemCount)++;
}
}
}
解决方案
您可以push()
在存储阵列上使用。但这customers[i].cartItems[customers[i].itemCount]
是一个映射。因此,您可以使用以下代码段分配给它:
// `customers[i].itemCount` is the mapping key
// `CartItem(customers[i].itemCount, _id)` is the value
customers[i].cartItems[customers[i].itemCount] = CartItem(customers[i].itemCount, _id);
推荐阅读
- java - FormText 无法显示 HTML 实体
- symfony - 忽略重复的数字的学说限制
- hyperledger-indy - 什么是 NYM 以及这与 VERINYM 有何关系
- java - Java CP1252 转 UTF8
- ios - 在 Xcode 10 中的自定义“嵌入式框架”中“按 PID 或名称附加到进程”后无法命中断点
- php - 教义刷新删除现有的实体值
- fortran - 使用 Fortran 模块的菊花链 USE 语句
- installation - 尝试在 Alpine Linux 中安装 Awesome-VM 时出现问题
- php - 从 MySQL 表获取数据到 PHP 时第一个数据不显示
- android - 是否可以将音乐或声音文件导入到颤振资产中