api/transactions.js
function getLocalAndRemoteTransactions(api, options, callback) {

  function queryRippled(_callback) {
    getAccountTx(api, options, function(error, results) {
      if (error) {
        _callback(error);
      } else {
        // Set marker so that when this function is called again
        // recursively it starts from the last place it left off
        options.marker = results.marker;

        _callback(null, results.transactions);
      }
    });
  }

  function queryDB(_callback) {
    if (options.exclude_failed) {
      _callback(null, []);
    } else {
      api.db.getFailedTransactions(options, _callback);
    }
  }

  var transactionSources = [
    queryRippled,
    queryDB
  ];

  async.parallel(transactionSources, function(error, sourceResults) {
    if (error) {
      return callback(error);
    }
    var results = sourceResults[0].concat(sourceResults[1]);
    var transactions = _.uniq(results, function(tx) {
      return tx.hash;
    });
    callback(null, transactions);
  });

}
function getLocalAndRemoteTransactions(api, options, callback) {

  function queryRippled(_callback) {
    getAccountTx(api, options, function(error, results) {
      if (error) {
        _callback(error);
      } else {
        // Set marker so that when this function is called again
        // recursively it starts from the last place it left off
        options.marker = results.marker;

        _callback(null, results.transactions);
      }
    });
  }

  function queryDB(_callback) {
    if (options.exclude_failed) {
      _callback(null, []);
    } else {
      api.db.getFailedTransactions(options, _callback);
    }
  }

  var transactionSources = [
    queryRippled,
    queryDB
  ];

  async.parallel(transactionSources, function(error, sourceResults) {
    if (error) {
      return callback(error);
    }
    var results = sourceResults[0].concat(sourceResults[1]);
    var transactions = _.uniq(results, function(tx) {
      return tx.hash;
    });
    callback(null, transactions);
  });

}
function getLocalAndRemoteTransactions ( api , options , callback ) { function queryRippled ( _callback ) { getAccountTx ( api , options , function ( error , results ) { if ( error ) { _callback ( error ) ; } else { // Set marker so that when this function is called again // recursively it starts from the last place it left off options . marker = results . marker ; _callback ( null , results . transactions ) ; } } ) ; } function queryDB ( _callback ) { if ( options . exclude_failed ) { _callback ( null , [ ] ) ; } else { api . db . getFailedTransactions ( options , _callback ) ; } } var transactionSources = [ queryRippled , queryDB ] ; async . parallel ( transactionSources , function ( error , sourceResults ) { if ( error ) { return callback ( error ) ; } var results = sourceResults [ 0 ] . concat ( sourceResults [ 1 ] ) ; var transactions = _ . uniq ( results , function ( tx ) { return tx . hash ; } ) ; callback ( null , transactions ) ; } ) ; }
Retrieve transactions from the Remote as well as the local database.

@param {Remote} remote
@param {/lib/db-interface} dbinterface
@param {RippleAddress} options.account
@param {Number} [-1] options.ledger_index_min
@param {Number} [-1] options.ledger_index_max
@param {Boolean} [false] options.earliestFirst
@param {Boolean} [false] options.binary
@param {Boolean} [false] options.exclude_failed
@param {opaque value} options.marker
@param {Function} callback

@callback
@param {Error} error
@param {Array of transactions in JSON format} transactions
Retrieve transactions from the Remote as well as the local database .