Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
Node.js CouchDB and Nano 'error happened in your connection'

I have been looking around for well over 2 hours now trying to find SOMETHING that would give me any kind of direction with this issue but simply cannot find it.

I am using Node.js and CouchDB with docker-compose. I am also using express and nano. I have stripped my server.js file down to nearly nothing and still keep getting this

Error:

/usr/src/app/node_modules/nano/lib/nano.js:137
        reject(new Error('error happened in your connection'))
                ^
 
Error: error happened in your connection
    at responseHandler (/usr/src/app/node_modules/nano/lib/nano.js:137:16)
    at /usr/src/app/node_modules/nano/lib/nano.js:427:13
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
 
Node.js v17.0.1

I have tried about 10 different ways of laying out the url but just cannot get any kind of indication as to why it just will not work. I have tried using curl -X PUT admin:admin@127.0.0.1:5984/posts/"001" -d '{"name":"Conner"} ' and it gets inserted without and issue.

server.js

'use strict';

const express = require('express');
var nano = require('nano')('http://admin:admin@127.0.0.1:5984');
var posts = nano.use('posts');

const app = express();
const bodyParser = require("body-parser");

const cors =require('cors');
app.use(cors());

app.use(bodyParser.urlencoded({ 
    extended: true 
}));
 
const PORT = 8080;
const HOST = '0.0.0.0';


async function asyncCall() {
  const response = await posts.insert({_id: "001"}, 'rabbit')
  return response
}
asyncCall();

app.use('/', express.static('public'));
console.log('up and running');


app.listen(PORT,HOST);

Dockerfile

FROM node:latest

EXPOSE 8080

WORKDIR /usr/src/app

RUN npm install express --save
RUN npm install nano --save
RUN npm install cors --save
RUN npm install -g loadtest --save

COPY server.js /usr/src/app/server.js
COPY /public /usr/src/app/public

CMD ["node", "server.js"]

docker-compose.yml

version: '3'
services:

 node1: 
  build: ./s1
  depends_on:
   - couchdb1
  container_name: s1a4
  ports:
   - "81:8080"

 couchdb1:
  image: couchdb:3.2.0
  container_name:  cdb1
  ports:
    - "5984:5984"
  environment:
    COUCHDB_USER: admin
    COUCHDB_PASSWORD: admin
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Since CouchDB is running in its own container and not on localhost, your connection string needs to point to the other container instead of 127.0.0.1 (localhost).

Since you called the CouchDB service "couchdb1", the connection string should instead be;

admin:admin@couchdb1:5984 
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!