Converting Object Promise to String in Javascript

49,316

There is no direct way to convert an Object Promise into a String. The only way to continue processing is to call an await function or use .then() and a callback function.

Share:
49,316
Admin
Author by

Admin

Updated on July 12, 2020

Comments

  • Admin
    Admin almost 4 years

    I'm working with React, Next.Js, semantic-ui-react and Solidity. It is my goal to print out the users address (from MetaMask) and a ProjectTitle (set by User) as meta infomation for a semantic-ui-react card. To print out the address in the 'header' is working, but I'm not able to print out the ProjectTitle as 'meta'. The Title should be a String but I'm receiving a Object Promise.

    static async getInitialProps() {
        const projects = await factory.methods.getDeployedProjects().call();
        return {
            projects
        };
    }
    
    async getProjectTitle(address) {
        let title;
        try {
            title = await factory.methods.projectTitle(address).call();
        } catch (err) {
            console.log('err');
        }
        return title;
    }
    
    renderProjects() {
        const items = this.props.projects.map(address => {
            return {
                header: address,
                color: 'green',
                description: (
                    <Link route={`/projects/${address}`}>
                        <a>View Project</a>
                    </Link>
                ),
                **meta: this.getProjectTitle(address)**,
                fluid: true,
                style: { overflowWrap: 'break-word' }
            };
        }, );
        return <Card.Group items={items} />
    }
    

    Part of the Solidity Contract:

    address[] public deployedProjects;
    mapping(address => string) public projectTitle;
    
    function createProject(string startup, string title, string deadline, string description, uint wage) public {
        address newProject = new Project(startup, title, deadline, description, wage, msg.sender);
        projectTitle[newProject] = title;
        deployedProjects.push(newProject);
    }
    
    function getDeployedProjects() public view returns (address[]) {
        return (
            deployedProjects
        );
    }
    

    The basic framework is from the Udemy Course "Ethereum and Solidity: The Complete Developer's Guide" by Stephen Grider.