Как читать поля в структуре из консоли трюфеля?

#ethereum #solidity #smartcontracts #truffle

Вопрос:

У меня есть простой смарт-контракт ToDoList, который выглядит так

 
pragma solidity ^0.8.0;

contract TodoList {
    uint256 public taskCount = 0;

    struct Task {
        uint256 id;
        string content;
        bool completed;
    }

    mapping(uint256 => Task) public tasks;

    constructor(){
        createTask("Buy Keyboard");
    }

    function createTask(string memory _content) public {
        taskCount  ;
        tasks[taskCount] = Task(taskCount, _content, false);
    }
}

 

Я хочу прочитать идентификатор первого задания, но он отображается неопределенным, что бы я ни пытался? Каков здесь правильный подход?
введите описание изображения здесь

Ответ №1:

Вы можете сделать это, дождавшись обещания, а затем присвоив значение:

 >> task.then(data => { id =   data["id"] } )
>> id
 

Ответ №2:

Вам нужно использовать await ключевое слово в качестве асинхронного действия. например

 todoList = await TodoList.deployed()
task = await todoList.task(1)
id = task.id.toNumber()