Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Dominique Sandoz
    @streunerlein
    so, this you should be able to query with the nano.view method,
    var nano = require('nano')('https://skimdb.npmjs.com');
    var registry = nano.db.use('registry');
    registry.view('app', 'byKeyword', {startkey: ["docpad_plugin"], endkey: ["docpad_plugin", {}], group_level: 3}, function(err, body) { if (err) return console.log(err); console.log(body.rows.length, "found"); });
    Dominique Sandoz
    @streunerlein
    oops, i made a typo - of course your query is for docpad-plugin and not docpad_plugin (correct in startkey and endkey)
    Benjamin Lupton
    @balupton
    @streunerlein it works! yay!
    so how did you know to use skimdb.npmjs.com instead of registry.npmjs.com ?
    Dominique Sandoz
    @streunerlein
    I googled ;) after realizing, that registry.npmjs.com isnt really a vanilla couch interface...
    Hendrik Roth
    @HendrikRoth
    Hello - short question, how(is it possible?) can i set permissions for a new created database by nano.db.create?
    Hendrik Roth
    @HendrikRoth
    No idea? :(
    Dominique Sandoz
    @streunerlein
    Hi @henn1nk , you usually do this by adding a _security document (see http://docs.couchdb.org/en/latest/intro/security.html)
    With nano, this would be a simple insert https://github.com/dscape/nano#dbinsertdoc-params-callback, so
    nano.db.create('db_name'), db = nano.use('db_name'), db.insert({_id: "_security", ...});
    (think that this notation is sequential for simplifying things, but keep in mind that the real operations are async...)
    Hendrik Roth
    @HendrikRoth
    @streunerlein thanks
    Hendrik Roth
    @HendrikRoth
    can i check with nano the db size?
    ah found it. db.get..
    Elliot
    @Elliot128

    Hello, I am using nano to convert a couchDB to postresql. I am using the get method to get documents, however, I get the econnreset error many times during the batch command. It looks like:

    body.rows.forEach(function(doc, index) {
    brokerDealers.get(doc.id, function(err, body, header) {
    }
    }

    Dominique Sandoz
    @streunerlein
    Hi @elliotatRetireup,
    my first guess would be that it's just too many connections. Try either to use a view with the include_docs parameter (which gives you all the docs) or use the async library with a limit-function (like seriesLimit or similar). Anyway, i would try to load as many docs in as few requests as possible.
    Elliot
    @Elliot128
                            async.forEachOfSeries(body.rows,function(row, key, callback) {
    
    
                                brokerDealers.get(row.id, function(err, body, header) {
    Good idea! I modified it to use async for each series. So now it is calling broker dealers.get then waiting for the callback. Unfortunately the .get command still gives me an error after a few rows.
    etimedout is the error
    Hendrik Roth
    @HendrikRoth
    hmmm i have no idea why, but it seams that nano.multipart.insert breaks my file... my data is a base64 string.
    Dominique Sandoz
    @streunerlein
    @elliotatRetireup no you did not quite understand what i meant. Try not to make a request for every doc, try to make one request in total. Read about views and include_docs. Or alternatively, use a LIMIT function of async (function name has to include "limit" as in eachLimit)
    @henn1nk make sure you took care of these things here http://stackoverflow.com/questions/26739928/couchdb-nano-multipart-insert it should not be b64 if that is not really what you want it to be as a file
    Hendrik Roth
    @HendrikRoth
    @streunerlein found the solution... a base64 string was wrong. i needed to upload blob. works now.
    Elliot
    @Elliot128
    @streunerlein Yes you are correct. I ended up removing the process of getting each doc one at a time. I ended up building a view in couch then grabbing the view via nano. Thanks again for the help, I was just getting started with nodejs at the time.
    And also async was a huge help with that too.
    Hendrik Roth
    @HendrikRoth
    can i do updates in nano, which only updates a part ofd a doc?
    Hendrik Roth
    @HendrikRoth
    i mean couchdb's "update" function
    ah. nano.atomic ... found it. sorry
    Landry Soules
    @landrysoules
    Hello. I'm in trouble with testing nano (with mocha/chai/sinon). I would like to simply verify nano.db.create is called in my code, but I can't get how to do it : var nano = require('nano')('http://localhost:5984'); var mock = sinon.mock(nano.db); mock.expects('db.create').atLeast(1).withExactArgs('bus_stop_dev').returns(true);
    But all I get is TypeError: Attempted to wrap undefined property db.create as function
    Does anybody know how can I get it right, please ?
    Landry Soules
    @landrysoules

    Hello. I'm in trouble with testing nano (with mocha/chai/sinon). I would like to simply verify nano.db.create is called in my code, but I can't get how to do it : var nano = require('nano')('http://localhost:5984'); var mock = sinon.mock(nano.db); mock.expects('db.create').atLeast(1).withExactArgs('bus_stop_dev').returns(true);
    But all I get is TypeError: Attempted to wrap undefined property db.create as function
    Does anybody know how can I get it right, please ?

    Changed my code : mock.expects('create') instead of 'db.create'. Now I get ExpectationError: Expected create(bus_stop_dev) at least once (never called)

    James Howe
    @OrangeDog
    is it possible to use nano through a socks5 proxy?
    James Howe
    @OrangeDog
    or do i need to find an http proxy that uses the socks proxy, then use that?
    James Howe
    @OrangeDog
    I used DeleGate
    hellboy81
    @hellboy81
    Hi. I am trying to (re)write/revision code that pipes input stream to attachment stream
    Callback should be called with response to client, if upload success
    with some JSON data
    where can I call this callback?
    // Should I call result callback from `cb`
    var ws = db.attachment.insert(documentName, attName, null, mimetype, {rev : response.rev}, function(...) {})
    
    // Or should I call in on ('end') event
    ws.on('end',  ...)
    
    // Should I catch write stream errors?
    ws.on('error', function (err) {...})
    
    // Should I catch input stream errors?
    file.on('error',  function(err) {...})
    
    file.pipe(ws)
    hellboy81
    @hellboy81
    Can you verify my code?
    Dominique Sandoz
    @streunerlein
    hi @hellboy81, this is how I do it (read file from disk, pipe to db attachment ):
    // add attachment
            var dbWriteStream = db.attachment.insert(doc._id, filename, null, type, {rev: doc._rev}, uploaded);
            var fileReadStream = fs.createReadStream(file.path);
    
            fileReadStream.on('error', error);
    
            dbWriteStream.on('error', error);
    
            fileReadStream.pipe(dbWriteStream);
    uploaded is the callback that gets called when piping is complete
    then, uploaded():
     function uploaded(err, body) {
              if (err) {
                console.log("[Attachment] Error in upload.");
                if (err.status_code === 409) {
                  console.log('Attachment upload conflict, retry.');
                  addAttachment(req, res);
                  return;
                }
                else {
                  console.log("Unrecoverable error in upload", err);
                  clearTmp();
                  return error(err);
                }
              }
    
              clearTmp();
              ....
    }
    hellboy81
    @hellboy81
    OK, should I handle event "Upload attachment completed" in callback , not in in attachment.on('end',...)
    Why?
    Dominique Sandoz
    @streunerlein
    hm not sure, I never got lucky using on('end', ...)
    also because there are two/three different approaches and i think it had to do with some API changes in streams in node and as well as modules can do it differently
    so i would suggest you to use the variant above, where nano handles it the way it wants
    hellboy81
    @hellboy81
    Only in callback I can get response from CouchDB?
    Dominique Sandoz
    @streunerlein
    yes
    hellboy81
    @hellboy81
    In `on 'end'' this information is not available?