kozlovzxc opened a new issue #263:
URL: https://github.com/apache/couchdb-nano/issues/263


   ## Expected Behavior
   
   [The CouchDB 
documentation](https://docs.couchdb.org/en/stable/api/database/changes.html#selector)
 describes that it is possible to provide _selector for `_chages` handler
   ```
   POST /recipes/_changes?filter=_selector HTTP/1.1
   Content-Type: application/json
   Host: localhost:5984
   
   {
       "selector": { "_id": { "$regex": "^_design/" } }
   }
   ```
   
   [The documentation also 
describes](https://docs.couchdb.org/en/stable/api/database/find.html#filtering-fields)
 that selector can contain a list of specified fields to filter.
   
   ```
   {
       "selector": { "Actor_name": "Robert De Niro" },
       "fields": ["Actor_name", "Movie_year", "_id", "_rev"]
   }
   ```
   
   ## Current Behavior
   
   Right now it is only possible to provide the `selector` parameter, but not 
the `fields` parameter. 
[Link](https://github.com/apache/couchdb-nano/blob/c84d0a43b13edc888a2a339f7fb057ad66d3d3fe/lib/changesreader.js#L168)
   ```
             if (self.selector) {
               req.qs.filter = '_selector'
               req.body.selector = self.selector
             }
   ```
   
   ## Possible Solution
   
   Locally I've fixed it just by adding another parameter. It can be something 
like this:
   ```
             if (self.selector || self.fields) {
               req.qs.filter = '_selector'
               req.body.selector = self.selector
               req.body.fields = self.fields
             }
   ```
   
   It also may worth adding another custom `body` param similar to `qs`, which 
adds additional body params. 
   ```
             Object.assign(req.qs, opts.qs)
             // New
             Object.assign(req.body, opts.body)
   ```
   
   ## Steps to Reproduce (for bugs)
   
   It should be straightforward to reproduce, but I can add exact steps if 
needed.
   
   ## Context
   
   I was trying to fetch few fields from https://replicate.npmjs.com, but I 
didn't need all extra fields as versions, because it noticeably slows the 
script down and increases network consumption.
   
   [More 
context](https://github.com/npm/registry/blob/master/docs/REPLICATE-API.md)
   
   ## Your Environment
   * Version used:   `"nano": "^9.0.3",`
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to