The 9.x release of Nano sees the following changes:
- the underlying library that handles HTTP request changes to axios as the previous library has been deprecated.
- the number of dependencies has been reduced - there are now only two runtime dependencies.
- the changes feed handler has been rewritten and bundled as part of Nano. See "changesReader".
- reworked custom logging.
Most Nano users will be able to switch from Nano 8.x to Nano 9.x without modifying any code but as this is a major version release, some things have changed which may break your code - pay particular attention if you were using the "Follow" library or had configured custom logging.
The changes feed reader is completely rewritten and has a new interface:
const db = nano.db.use('mydb')
db.changesReader.start({ batchSize: 50 })
.on('batch', (b) => {
console.log('a batch of', b.length, 'changes has arrived');
}).on('seq', (s) => {
console.log('sequence token', s);
}).on('error', (e) => {
console.error('error', e);
})
const url = require('url')
const logger = (data) => {
// if this is a request
if (typeof data.err === 'undefined') {
const u = new url.URL(data.uri)
console.log(data.method, u.pathname, data.qs)
} else {
// this is a response
const prefix = data.err ? 'ERR' : 'OK'
console.log(prefix, data.headers.statusCode, JSON.stringify(data.body).length)
}
}
const nano = Nano({ url: process.env.COUCH_URL, log: logger })