No se puede imprimir el evento sin JSONstringify

Estoy tratando de entender la diferencia entre los siguientes casos al imprimir el evento: En web3.js

escuchaEvento: function(){
    Contract.deployed().then(función(instancia){
      instancia.HelloWorld().watch(función(error, evento){
        document.getElementById("demo").innerHTML += JSON.stringify(evento);

        consola.log(evento); //1. No está trabajando
        consola.log(evento.argumentos); // 2. Da todos los argumentos
        consola.log(evento.argumentos.nombre); // 3. No funciona

      });
    });
  },

  1. consola.log(evento); //1. No está trabajando
  2. consola.log(evento.argumentos); // 2. Da todos los argumentos
  3. consola.log(evento.argumentos.nombre); // 3. No funciona; aquí nombre es el primer argumento en el evento.

Mi pregunta es si el objeto no se puede imprimir, entonces por qué funciona para la segunda condición y si funciona, entonces por qué falla para la tercera.

Para acceder a los argumentos podemos usar esto: console.log(JSON.stringify(event.args.name));

Al imprimir el evento console.log(JSON.stringify(event)); También da los detalles de la transacción, ¿cómo obtener eso?

Agradezco cualquier ayuda de antemano.

¿Está utilizando web3 v1.0? Dices que no funciona, ¿a qué te refieres? ¿No registra nada o datos incorrectos?
web3 v0.2 y no muestra ningún registro.

Respuestas (1)

También agrego problemas al usar watch() en web3 para ver eventos.

Pero logro resolverlos usando el método alternativo ( docs ):

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

Intenta cambiar:

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

a

instance.HelloWorld({}, function(error, event){
Gracias por la respuesta. En realidad, puedo obtener el registro de eventos. Estaba preguntando cuál es la diferencia entre esos 3 casos que mencioné.