update(fields, callback) {

    if (this._readonly) {
      return callback(new Error('Cannot use update in a readonly query.'));
    }

    if (this.__isGrouped__()) {
      throw new Error('Cannot update grouped queries');
    }

    let query = this.__generateQuery__();
    let countQuery = this.__generateCountQuery__();
    let updateQuery = this.__generateUpdateQuery__(fields);

    let source = this._transaction ? this._transaction : this.db;

    source.query(countQuery.sql, countQuery.params, (err, countResult) => {

      source.query(query.sql, query.params, (err, result) => {

        source.query(updateQuery.sql, updateQuery.params, (err, updateResult) => {

          this.__endProcessor__(
            err,
            {
              countResult: countResult || [],
              result: result || [],
              updateResult: updateResult || []
            },
            callback
          );

        });

      });

    });

  }
Execute query as an update query, changed all fields specified.
@param {Object} fields The object containing columns (keys) and associated values you'd like to update
@param {function({Error}, {Nodal.ModelArray})} callback The callback for the update query