Невозможно распечатать событие без JSONstringify

Я пытаюсь понять разницу между следующими случаями при печати события: В web3.js

прослушивать событие: функция () {
    Contract.deployed().then(функция(экземпляр){
      instance.HelloWorld(). Watch (функция (ошибка, событие) {
        document.getElementById("демо").innerHTML += JSON.stringify(event);

        console.log(событие); //1. Это не работает
        console.log(событие.args); // 2. Выдает все аргументы
        console.log(событие.args.name); // 3. Не работает

      });
    });
  },

  1. console.log(событие); //1. Это не работает
  2. console.log(событие.args); // 2. Выдает все аргументы
  3. console.log(событие.args.name); // 3. Не работает; здесь name является первым аргументом события.

Мой вопрос: если объект не может быть напечатан, то почему он работает для 2-го условия, и если он работает, то почему он не работает для 3-го.

Чтобы получить доступ к аргументам, мы можем использовать это: console.log(JSON.stringify(event.args.name));

При печати события console.log(JSON.stringify(event)); Он также дает детали транзакции, как это получить?

Оцените любую помощь заранее.

Вы используете web3 v1.0? Вы говорите, что это не работает, что вы имеете в виду? Он ничего не регистрирует или неверные данные?
web3 v0.2, и он не показывает журнал.

Ответы (1)

Я также добавляю проблемы, используя watch() в web3 для отслеживания событий.

Но мне удается решить их, используя альтернативный метод ( docs ):

// Or pass a callback to start watching immediately
var event = myContractInstance.MyEvent([{valueA: 23}] [, additionalFilterObject] , function(error, result){
  if (!error)
    console.log(result);
});

Попробуйте изменить:

instance.HelloWorld().watch(function(error, event){

к

instance.HelloWorld({}, function(error, event){
Спасибо за ответ. На самом деле я могу получить журнал событий. Я спрашивал, в чем разница между теми тремя случаями, которые я упомянул.