Package couchdb is a driver for connecting with a CouchDB server over HTTP.
Use the `couch` driver name when using this driver. The DSN should be a full
URL, likely with login credentials:
The CouchDB driver generally interprets kivik.Options keys and values as URL
query parameters. Values of the following types will be converted to their
appropriate string representation when URL-encoded:
Passing any other type will return an error.
The only exceptions to the above rule are:
The CouchDB driver supports a number of authentication methods. For most uses,
you don't need to worry about authentication at all--just include authentication
credentials in your connection DSN:
This will use Cookie authentication by default.
To use one of the explicit authentication mechanisms, you'll need to use kivik's
Authenticate method. For example:
Normally, to include an attachment in a CouchDB document, it must be base-64
encoded, which leads to increased network traffic and higher CPU load. CouchDB
also supports the option to upload multiple attachments in a single request
using the 'multipart/related' content type. See
As an experimental feature, this is now supported by the Kivik CouchDB driver as
well. To take advantage of this capability, the `doc` argument to the Put()
method must be either:
With this in place, the CouchDB driver will switch to `multipart/related` mode,
sending each attachment in binary format, rather than base-64 encoding it.
To function properly, each attachment must have an accurate Size value. If the
Size value is unset, the entirely attachment may be read to determine its size,
prior to sending it over the network, leading to delays and unnecessary I/O and
CPU usage. The simplest way to ensure efficiency is to use the NewAttachment()
method, provided by this package. See the documentation on that method for
To disable the `multipart/related` capabilities entirely, you may pass the
`NoMultipartPut` option, with any value. This will fallback to the default of
inline base-64 encoding the attachments. Example:
If you find yourself wanting to disable this feature, due to bugs or performance,
please consider filing a bug report against Kivik as well, so we can look for a
solution that will allow using this optimization.