web-dev-qa-db-ja.com

JavascriptでObject PromiseをStringに変換する

私は、React、Next.Js、semantic-ui-react、およびSolidityを使用しています。ユーザーのアドレス(MetaMaskから)とProjectTitle(ユーザーが設定)を、semantic-ui-reactカードのメタ情報として出力することが私の目標です。 「ヘッダー」のアドレスを印刷することはできますが、ProjectTitleを「メタ」として印刷することはできません。タイトルは文字列にする必要がありますが、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} />
}

連帯契約の一部:

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

基本的なフレームワークは、Stephen GriderによるUdemyコース「Ethereum and Solidity:The Complete Developer's Guide」からのものです。

5
Saensation

Object PromiseをStringに直接変換する方法はありません。処理を続行する唯一の方法は、await関数を呼び出すか、.then()とコールバック関数を使用することです。

6
Saensation