Home > Software engineering >  Solidity uint256[] not returning from a function
Solidity uint256[] not returning from a function

Time:08-10

I have a function that returns an uint256[] from this mapping : mapping(address => uint256[]) ownerToIds

but the problem is that when I try to return the array elements it does nothing.

I already tried adding public and view to function but it didn't change anything.

code: (using remix in binance testnet)

mapping(address => uint256[]) ownerToIds;

function getOwnersOwnedTokenIds(address owner) public returns(uint256[] memory){
    return ownerToIds[owner];
}

CodePudding user response:

When you want return a specific data for handle it outsite your smart contract, you must use view access modifier. It allows you to extrapolated data from your smart contract.

In your case, you can try to modify your getOwnersOwnedTokenIds() function in this way:

function getOwnersOwnedTokenIds(address owner) public view returns(uint256[] memory){
  return ownerToIds[owner];
}

Example of a working smart contract:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Test {

    mapping(address => uint256[]) ownerToIds;

    constructor() {
        ownerToIds[msg.sender].push(1);
        ownerToIds[msg.sender].push(2);
        ownerToIds[msg.sender].push(3);
        ownerToIds[msg.sender].push(4); 
    }

    function getOwnersOwnedTokenIds(address owner) public view returns(uint256[] memory){
        return ownerToIds[owner];
    }

}
  • Related