Получение данных из сопоставления

У меня возникли проблемы с доступом к данным из сопоставления, которое я создал на стороне клиента.

Мой смарт-контракт имеет 2 функции 1, которые устанавливают значения для сопоставления. Второй извлекает значения моего сопоставления. Когда я развертываю и запускаю эти функции в Remix, они возвращают правильное значение. Но когда я начинаю интегрироваться, то с моим внешним интерфейсом я сталкиваюсь с некоторыми проблемами.

Вот функции смарт-контракта:

struct Student {
    string grade;
    address studentAddr;
    string fName;
    string lName;
    string email;
    string className;
}

mapping (address => Student) Students;

address[] public studentAccts;

Функция сеттера:

 function setStudent (address _address, string _grade, string _fName, string _lName, string _email, string _className) public {
    var student = Students[_address];

    //Setting the variables of my Struct. 
    student.grade = _grade;
    student.studentAddr = _address;
    student.fName = _fName;
    student.lName = _lName;
    student.email = _email;
    student.className = _className;

    studentAccts.push(_address) -1;
}

Тогда мой геттер

function getStudent(address _address) view public returns (string, address, string, string, string, string){
    return (Students[_address].grade, Students[_address].studentAddr, Students[_address].fName, Students[_address].lName, Students[_address].email, Students[_address].className);
}

Теперь на моей стороне клиента. Моя функция для заполнения сопоставления для каждого адреса.

    Registrar.setStudent($("#address").val(), $("#grade").val(),$("#first_name").val(), $("#last_name").val(),$("#email").val(),$("#className").val(),(err, res) =>{
      console.log("this is my result", res);
      if(err){
        console.log(err)
      } 
    });

Затем, чтобы получить значения в сопоставлении на основе определенного адреса:

  $("#Retrieve").click(function(){
    const address = $("#address").val();

    Registrar.getStudent(address, (err, res) =>{
      console.log(res);

    })

  })

When I call the getStudent's function in my smart contract I am getting an array that looks like this: ["0x00000000000000000000000000000000", "0x0000000000000000000000000000000000000000", "0x00000000000000000000000000000000", "0x00000000000000000000000000000000", "0x00000000000000000000000000000000", "0x00000000000000000000000000000000"]

Не уверен, что мне здесь не хватает. Любая помощь будет принята с благодарностью!

Контракт вроде как работает. Вы уверены, что $("#address").val();возвращает правильный адрес в вашем случае?
@Henk Вы правы - я забыл указать ТЕКСТ в качестве поля ввода, поэтому функция запускалась неправильно. Спасибо, что посмотрели мой вопрос. Теперь все должно быть хорошо! Свежий взгляд всегда помогает при отладке
вы должны отправить и принять свой собственный ответ на эту проблему, чтобы другие тоже могли учиться

Ответы (1)

Я забыл указать ТЕКСТ в качестве типа поля ввода, поэтому функция запускалась неправильно. Спасибо, что посмотрели мой вопрос. Теперь все должно быть хорошо! Свежий взгляд всегда помогает при отладке