{% include anchor.html edit="true" title="API overview" hash="overview" %}

PouchDB has an asynchronous API, supporting [callbacks](http://docs.nodejitsu.com/articles/getting-started/control-flow/what-are-callbacks), [promises][promise], and
[async functions](https://jakearchibald.com/2014/es7-async-functions/). For beginners, we recommend promises, although you are free to use whatever format you prefer. If you are unsure, check out our [guide to asynchronous code](/guides/async-code.html).

Most of the API is exposed as:

{% highlight js %}
db.doSomething(args..., [options], [callback])
{% endhighlight %}

&hellip; where both the `options` and `callback` are optional.

### Callbacks

Callbacks use the standard Node.js idiom of:

{% highlight js %}
function(error, result) { /* ... */ }
{% endhighlight %}

&hellip; where the `error` will be undefined if there's no error.

### Promises

If you don't specify a `callback`, then the API returns a [promise][]. In [supported browsers](http://caniuse.com/#feat=promises) or Node.js, native promises are used, falling back to the minimal library [lie][] as needed.

{% include alert/start.html variant="info"%}
{% markdown %}

**Using Ionic/AngularJS?**  You can wrap PouchDB promises in [`$q.when()`](https://docs.angularjs.org/api/ng/service/$q#when). This will notify AngularJS to update the UI when the PouchDB promise has resolved.

{% endmarkdown %}
{% include alert/end.html%}

To use a custom promise implementation with PouchDB, you must redefine a global `Promise` object before loading PouchDB:

{% highlight html %}
<script>window.Promise = MyCustomPromiseLibrary;</script>
<script src="path/to/pouchdb.js"></script>
{% endhighlight %}

### Async functions

Another option is to use `async`/`await` pattern instead of promises chain (ie. `.then().catch()`). `async`/`await` is widely supported by all major browsers and Node.js. Use a transpiler with `async`/`await` polyfill such as [Babel](http://babeljs.io/) if you need to support older browsers.

Note that the samples for `async`/`await` in the API documentation assume that your code is inside an async function. So for instance:

{% highlight js %}
async function myFunction() {
  // your code goes in here
}
{% endhighlight %}

Any `await` not inside of an async function is a syntax error. For more information about `async`/`await`, read [our introductory blog post](http://pouchdb.com/2015/03/05/taming-the-async-beast-with-es7.html).

[promise]: https://www.promisejs.org/
[lie]: https://github.com/calvinmetcalf/lie
[event emitter]: http://nodejs.org/api/events.html#events_class_events_eventemitter
