Posted on October 20th, 2015 at 09:00 PM
CouchDB’s Futon viewer can only upload files individually so it is more than a bit tedious to load the contents of a folder. Note there is a replacement for Futon, namely Fauxton but so far we have not been able to get it to work so can’t determine if Fauxton solves the folder contents limitation.
There is a solution however in the form of Couchapp though it can be a bit of a pain to install (as is Fauxton by the way). You will need Python 2.6 or later on your local machine. We found the following installation process worked:
If not already installed, install ‘pip’:
sudo apt-get install python-pip
Then install couchapp:
sudo pip install --upgrade couchapp
If you see the following error:
http_parser/parser.c:8:22: fatal error: pyconfig.h: No such file or director #include "pyconfig.h"you will then need to install python-dev:
sudo apt-get install python-devand then rerun the couchapp install
Verify couchapp is installed:
Hopefully so far so good. Make sure your CouchDB service is running. Now to deploy your app you first need to create a database on the CouchDB server (you can use Futon just as easily for this). Call the database say webapp.
Now create a local folder using same name as database:
couchapp generate app webappthis creates a typical structure under webapp:
_attachments couchapp.json _id language lists README.md shows updates vendor views
Now copy your app files and folders into the _attachments folder say
css js fonts helloworld.html
Transfer files and folders from your local folder to the database using the following command (from the folder above webapp):
couchapp push webapp http://yourcouchdbserver:5984/webapp
All your files and folders should now be in the webapp database. Confirm with Futon though its a flat view. An alternative is to use:
curl -X GET http://yourcouchdbserver:5984/webapp/_design/webapp | python -m json.toolwith typical output:
"css/blog-home.css": "d5fd22151cd9416e79593b50a0e4538c", "css/bootstrap.css": "c3cfe3168d972939ea258899a17140ab", "fonts/glyphicons-halflings-regular.eot": "f4769f9bdb7466be65088239c12046d1", "fonts/glyphicons-halflings-regular.svg": "89889688147bd7575d6327160d64e760", "js/bootstrap.js": "6bfd171748f088ad503cb07c080b1f33", "js/bootstrap.min.js": "046ba2b5f4cff7d2eaaa1af55caa9fd8", "js/jquery.js": "3c9137d88a00b1ae0b41ff6a70571615", "helloworld.html": "20d2e884d639617f6cf221382dd6b6b0"
Decide for yourself if this is ‘pretty’ json but it is a more compact view than Futon. Your app should now be ready to run. Note the _id file identifies a path prefix, in this example it should be ‘_design/webapp’.
Execute your app from the following url: http://yourcouchdbserver:5984/webapp/_design/webapp/helloworld.html
More info on using couchapp can be found here