如何解决如何从父类中的映射牢固地访问子结构?
我有一个客户结构,在该结构中我有一个映射到另一个名为 CartItem 的结构。我有一个 addToCart 函数,我想在其中添加一个新的 CartItem 作为 Customer 结构中的子结构。这是我在 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。