微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从父类中的映射牢固地访问子结构?

如何解决如何从父类中的映射牢固地访问子结构?

我有一个客户结构,在该结构中我有一个映射到另一个名为 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 举报,一经查实,本站将立刻删除。