web-dev-qa-db-fra.com

Conversion d'une promesse d'objet en chaîne en Javascript

Je travaille avec React, Next.Js, semantic-ui-react et Solidity. Mon objectif est d'imprimer l'adresse des utilisateurs (à partir de MetaMask) et un ProjectTitle (défini par l'utilisateur) comme méta-informations pour une carte sémantique-ui-react. Pour imprimer l'adresse dans "l'en-tête", cela fonctionne, mais je ne peux pas imprimer le ProjectTitle en tant que "méta". Le titre doit être une chaîne mais je reçois une promesse d'objet.

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} />
}

Partie du contrat de solidarité:

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
    );
}

Le cadre de base est tiré du cours Udemy "Ethereum and Solidity: The Complete Developer's Guide" de Stephen Grider.

6
Saensation

Il n'existe aucun moyen direct de convertir une promesse d'objet en chaîne. La seule façon de poursuivre le traitement consiste à appeler une fonction await ou à utiliser .then() et une fonction de rappel.

6
Saensation