count(column, options) {
      return this.all().count(column, options);
    }
Gets the number of matching records in the database, respecting any previous calls to
{@link Model#query}. If the `column` argument is provided, records with a `null` value in
that column will be excluded from the count.

**Note** that in PostgreSQL the result is a string by default. To read more about the
reasons for this see the [pull request](https://github.com/brianc/node-postgres/pull/353)
that implemented it in the `node-postgres` database driver. If you're sure that the
results will always be less than 2<sup>53</sup> (9007199254740991) you can override
the default string parser like this:

    require('pg').defaults.parseInt8 = true

Put this snippet before the call to `require('knex')` wherever you are initalizing
`knex`.

@example
new Duck().where('color', 'blue').count('name').then((count) => {
  console.log('number of blue ducks', count)
})

@method Model#count
@since 0.8.2
@fires Model#counting
@param {string} [column='*']
  Specify a column to count. Rows with `null` values in this column will be excluded.
@param {Object} [options] Hash of options.
@param {boolean} [options.debug=false]
  Whether to enable debugging mode or not. When enabled will show information about the
  queries being run.
@returns {Promise<number|string>}
  A promise resolving to the number of matching rows. By default this will be a number,
  except with PostgreSQL where it will be a string. Check the description to see how to
  return a number instead in this case.