find (id, opts) {
    return this.crud('find', id, opts)
  }
Retrieve via an adapter the record with the given primary key.

{@link Mapper#beforeFind} will be called before calling the adapter.
{@link Mapper#afterFind} will be called after calling the adapter.

@example
PostMapper.find(1).then((post) => {
  console.log(post); // { id: 1, ...}
});

@example
// Get full response
PostMapper.find(1, { raw: true }).then((result) => {
  console.log(result.data); // { id: 1, ...}
  console.log(result.found); // 1
  console.log(...); // etc., more metadata can be found on the result
});

@fires Mapper#beforeFind
@fires Mapper#afterFind
@method Mapper#find
@param {(string|number)} id The primary key of the record to retrieve.
@param {object} [opts] Configuration options. Refer to the `find` method
of whatever adapter you're using for more configuration options.
@param {boolean} [opts.adapter={@link Mapper#defaultAdapter}] Name of the
adapter to use.
@param {boolean} [opts.notify={@link Mapper#notify}] See {@link Mapper#notify}.
@param {boolean} [opts.raw={@link Mapper#raw}] See {@link Mapper#raw}.
@param {string[]} [opts.with=[]] Relations to eager load in the request.
@returns {Promise} Resolves with the found record. Resolves with
`undefined` if no record was found.
@see http://www.js-data.io/v3.0/docs/reading-data
@since 3.0.0
@tutorial ["http://www.js-data.io/v3.0/docs/reading-data","Reading data"]