The following code initiates two databases: db and remotedb. Then, then when router.get('/projects', function(req, res) is called both databases should sync:
var express = require('express')
var _ = require('lodash')
var PouchDB = require('pouchdb')
var webpack = require('webpack')
var config = require('./webpack.dev.conf')
var app = express()
var compiler = webpack(config)
var db = new PouchDB('vuedb')
var remotedb = new PouchDB('http://localhost:5984/vuedb')
// handle fallback for HTML5 history API
app.use(require('connect-history-api-fallback')())
// serve webpack bundle output
app.use(require('webpack-dev-middleware')(compiler, {
publicPath: config.output.publicPath,
stats: {
colors: true,
chunks: false
}
}))
// enable hot-reload and state-preserving
// compilation error display
app.use(require('webpack-hot-middleware')(compiler))
// get an instance of the express Router
var router = express.Router()
// handle PouchDB stuff
router.get('/projects', function(req, res) {
console.log('DB:', db)
console.log('REMOTE:', remotedb)
if (remotedb) {
db.sync(remotedb, {
live: true,
retry: true
}).on('changed', function (info) {
console.log('CHANGED', info)
}).on('error', function (err) {
console.log('ERROR', err)
})
}
})
// all of our routes will be prefixed with /api
app.use('/api', router)
app.listen(8080, 'localhost', function (err) {
if (err) {
console.log(err)
return
}
console.log('Listening at http://localhost:8080')
})
console.log('DB:', db) and console.log('REMOTE:', remotedb) do log the databases:
However the databases don't sync, in fact, remotedb isn't created at all:
Why could be the cause? And how to fix it?