Connect to Cloudant CouchDB with Node.js?

前端 未结 4 897
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-14 08:57

I am trying to connect to my CouchDB database on Cloudant using Node.js.

This worked on the shell:

    curl https://weng:password@weng.cloudant.com/m         


        
相关标签:
4条回答
  • 2020-12-14 09:09

    Just wanted to add

    • nano - minimalistic couchdb driver for node.js

    to the list. It is written by Nuno Job, CCO of nodejitsu, and actively maintained.

    0 讨论(0)
  • 2020-12-14 09:13

    This answer is looking a bit dated. Here is an updated answer that I verified using the following Cloudant Supported NPM Node Client library that works. https://www.npmjs.com/package/cloudant#getting-started

    And to answer his question on how to list his databases use the following code.

    //Specify your Cloudant Database Connection URL. For Bluemix format is: https://username:password@xxxxxxxxx-bluemix.cloudant.com
    
    dbCredentials_url = "https://username:password@xxxxxxxxx-bluemix.cloudant.com"; // Set this to your own account 
    
    // Initialize the library with my account. 
    // Load the Cloudant library. 
    cloudant = require('cloudant')(dbCredentials_url);
    
    // List the Cloudant databases
    cloudant.db.list(function(err, allDbs) {
    console.log('All my databases: %s', allDbs.join(', ')) });
    
    0 讨论(0)
  • 2020-12-14 09:15

    The built-in Node.js http client is pretty low level, it doesn't support HTTP Basic auth out of the box. The second argument to http.createClient is just a hostname. It doesn't expect credentials in there.

    You have two options:

    1. Construct the HTTP Basic Authorization header yourself

    var Base64 = require('Base64');
    var couchdb = http.createClient(443, 'weng.cloudant.com', true);
    var request = couchdb.request('GET', '/my_app/_all_docs', {
        'Host': 'weng.cloudant.com',
        'Authorization': 'Basic ' + Base64.encode('weng:password')
    });
    request.end();
    request.on('response', function (response) {
        response.on('data', function (data) {
            util.print(data);
        });
    });
    

    You will need a Base64 lib such as one for node written in C, or a pure-JS one (e.g. the one that CouchDB Futon uses).

    2. Use a more high-level Node.js HTTP client

    A more featureful HTTP client, like Restler, will make it much easier to do the request above, including credentials:

    var restler = require('restler');
    restler.get('https://weng.cloudant.com:443/my_app/_all_docs', {
        username: 'weng',
        password: 'password'
    }).on('complete', function (data) {
        util.print(data);
    });
    
    0 讨论(0)
  • 2020-12-14 09:15

    There are lots of CouchDB modules for Node.js.

    • node-couch - a CouchDB connector
    • node-couchdb - A full API implementation
    • node-couchdb-min - Light-weight client with low level of abstraction and connection pooling.
    • cradle - a high-level, caching, CouchDB client
    0 讨论(0)
提交回复
热议问题