0

Ich versuche Transaktionsfehler zu erfassen. Ich habe den folgenden Code, die einen Fehler verursachen sollten, weil diese Einrichtungen bereits vorhanden sind, aber nichts in der Konsole wird ausgegeben:Erfassen Fehler in Gcloud-Knoten-Transaktion

 datastore.runInTransaction(function(transaction, done) { 


      transaction.save([ 
      { 
       key: my_key1, 
       method: 'insert', 
       data: { 
       stuff: 'stuff' 
       } 
      }, 
      { 
       key: my_key2, 
       method: 'insert', 
       data: { 
       stuff: 'stuff' 
       } 
      } 
      ]); 


      console.log('here'); 
      done(function(err, data) { 
      if (err) { 
       console.log('err : ' + err); 
       transaction.rollback(); 
       return; 
      } 
      console.log('no error'); 
      return; 
      }); 


     }); 

}); 

Antwort

2

done nicht einen Rückruf bekommt. Platzieren Sie diesen Rückruf als zweites Argument zu runInTransaction.

var cachedTransaction; 
datastore.runInTransaction(function(transaction, done) { 
    cachedTransaction = transaction; 

    transaction.save([ 
    { 
     key: my_key1, 
     method: 'insert', 
     data: { 
     stuff: 'stuff' 
     } 
    }, 
    { 
     key: my_key2, 
     method: 'insert', 
     data: { 
     stuff: 'stuff' 
     } 
    } 
    ]); 

    done(); 
}, function(err) { 
    if (err) { 
    console.log('err : ' + err); 
    cachedTransaction.rollback(); 
    return; 
    } 

    console.log('no error'); 
}); 

Hinweis: wir auf eine bessere API für diese arbeiten: https://github.com/GoogleCloudPlatform/gcloud-node/issues/633

+1

schön es funktioniert! Vielen Dank! – user2924127