Merge pull request #267 from jandrieu/patch-1

Insert's document name param property is docName
diff --git a/README.md b/README.md
index 4162df0..6cdd76d 100644
--- a/README.md
+++ b/README.md
@@ -35,7 +35,7 @@
   - [nano.request(opts, [callback])](#nanorequestopts-callback)
   - [nano.config](#nanoconfig)
   - [nano.updates([params], [callback])](#nanoupdatesparams-callback)
-  - [nano.followUpdates([params], [callback])](#nanofollowUpdatesparams-callback)
+  - [nano.followUpdates([params], [callback])](#nanofollowupdatesparams-callback)
 - [document functions](#document-functions)
   - [db.insert(doc, [params], [callback])](#dbinsertdoc-params-callback)
   - [db.destroy(docname, rev, [callback])](#dbdestroydocname-rev-callback)
@@ -492,9 +492,9 @@
 
 ## multipart functions
 
-### db.multipart.insert(doc, attachments, [params], [callback])
+### db.multipart.insert(doc, attachments, params, [callback])
 
-inserts a `doc` together with `attachments` and optional `params`. if params is a string, its assumed as the intended document name. if params is an object, its passed as query string parameters and `doc_name` is checked for defining the document name.
+inserts a `doc` together with `attachments` and `params`. if params is a string, its assumed as the intended document name. if params is an object, its passed as query string parameters and `docName` is checked for defining the document name.
  refer to the [doc](http://wiki.apache.org/couchdb/HTTP_Document_API#Multiple_Attachments) for more details.
  `attachments` must be an array of objects with `name`, `data` and `content_type` properties.
 
diff --git a/lib/nano.js b/lib/nano.js
index e957594..5fcb6d8 100644
--- a/lib/nano.js
+++ b/lib/nano.js
@@ -44,7 +44,7 @@
     var rootPath = path.pathname.replace(/\/?$/, '/..');
 
     if (db) {
-      cfg.url = u.resolve(cfg.url, rootPath).replace(/\/?$/, '');
+      cfg.url = urlResolveFix(cfg.url, rootPath).replace(/\/?$/, '');
       return db;
     }
   }
@@ -89,7 +89,7 @@
 
     // http://wiki.apache.org/couchdb/HTTP_database_API#Naming_and_Addressing
     if (opts.db) {
-      req.uri = u.resolve(req.uri, encodeURIComponent(opts.db));
+      req.uri = urlResolveFix(req.uri, encodeURIComponent(opts.db));
     }
 
     if (opts.multipart) {
@@ -305,7 +305,7 @@
       qs = {};
     }
 
-    qs.db = u.resolve(cfg.url, encodeURIComponent(dbName));
+    qs.db = urlResolveFix(cfg.url, encodeURIComponent(dbName));
 
     if (typeof callback === 'function') {
       return followAgent(qs, callback);
@@ -316,7 +316,7 @@
 
   function _serializeAsUrl(db) {
     if (typeof db === 'object' && db.config && db.config.url && db.config.db) {
-      return u.resolve(db.config.url, encodeURIComponent(db.config.db));
+      return urlResolveFix(db.config.url, encodeURIComponent(db.config.db));
     } else {
       return db;
     }
@@ -748,3 +748,10 @@
  */
 nano.version = require('../package').version;
 nano.path    = __dirname;
+
+function urlResolveFix(couchUrl, dbName) {
+  if (/[^\/]$/.test(couchUrl)) {
+    couchUrl += '/';
+  }
+  return u.resolve(couchUrl, dbName);
+}