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.
Author by
Admin
Updated on July 12, 2020Comments
-
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.