How to operate the databases in MongoDB in nodejs via mongoose? - node.js

The MongoDB has set the property 'auth' with true, in commond line, you must log in Admin first, and then you can operate other databases.
In nodejs, I wrote the connection like this:
mongoose.connect('mongodb://username:pwd#127.0.0.1 :27017/test');
But it' s failed, do I need to connect Admin first, if so, how?

Related

Can't connect to mongodb container when i add path to a database

I’m running mongoDB as a docker container locally, and I initiate a database creation when starting the container. But I can’t seem to connect to the database from my nodejs application when I add path to the dB. For example i can connect when I use “mongoDB://admin:password#localhost:27017” but not when I use “mongoDB://admin:password#localhost:27017/myDB”.
I'm running the container with docker-compose. Also when I log the output of running the mongo container I see a failure message that says:
"result":"UserNotFound: Could not find user \"admin\" for db \"journalDB\""}}
JournalDB is the name of the db i want to connect to, and i want to be able to connect to it from my nodejs application like so:
mongoose
.connect("mongoDB://admin:password#localhost:27017/journalDB", {
useNewUrlParser: true,
useUnifiedTopology: true,
})
I have read the answer to a similar question here and this documentation , but I feel they have only explained the possible problem, but have not helped me fix it.
I would really appreciate it if there's a straightforward solution.
Maybe try
.connect("mongoDB://admin:password#localhost:27017/journalDB?authSource=admin" ...

I am running an instance of mongodb in docker. How do I get the connection string to use it with RoboT3 or mongoose in my nodejs application?

I am running an instance of mongodb in docker. How do I get the connection string to use it with RoboT3 or mongoose in my nodejs application?
I want to be able to get a connection string like this
mongodb://dbuser:dbpassword#examplehost:63639/name
You need to construct it yourself following the documentation.

Can't authenticate to local MongoDB database

I recently started working on a project with Express and since I'm using Node.js as backend I chose MongoDB as my database. It's my first time working with Mongo but I can't authenticate with Express, it works fine from terminal. I followed the guide from MogoDB blog here. I tried using their Atlas service where I had no problem authenticating. I'm using MongoDB driver. Here's how my connection URI looks like:
const uri = `mongodb://${username}:${password}#127.0.0.1/cloud?retryWrites=true&w=majority`;
I tried changing mongodb:// to mongodb+srv:// but that resulted in invalid connection string error.
You need to specify the authentication database, usually admin:
const uri = `mongodb://${username}:${password}#127.0.0.1/cloud?authSource=admin&retryWrites=true&w=majority`;
If you don't specify it then in your case MonogDB defaults the authentication database to cloud - which is most likely wrong.
When you are accessing mongodb on the web you can click on connect and on connect your application. You will show the uri to copy paste starting with
mongodb+srv://USERNAME:PASSWORD#CLUSTER/DATABASE
You forgot to specify the CLUSTER. Currently is your local Database

Incomplete response received from application in Node Js and Mongoose

I installed my api rest in my hosting using cPanel. The routes work perfect and the db is connected. The problem is when I need to use any mongoose method, i.e. model.find({}), the response is
Incomplete response received from application
For other routes, that don't return any data from the DB, works perfect, using json format.
You cannot run MongoDB on shared hosting. Please refer to this thread..
You can use free cloud service like Heroku https://heroku.com or more sophisticated ones like AWS or Azure. If shared hosting deployment is a must, then an option is use external MongoDB instance. Easiest way to get MongoDB instance is using MongoDB Atlas. There is a free sandbox for development purpose.
To create an instance, follow these steps:
Go to https://www.mongodb.com/cloud/atlas, and login/create account
Click 'build a cluster'. Set it as tier-0 for free instance.
Once the cluster is created, click on connect, then choose 'connect your application'
Copy the mongoDB URI and paste it to your code containing something like mongoose.connect(mongoDBAtlasURIhere, { useNewUrlParser: true, useUnifiedTopology: true})
Example of complete tutorial for Node JS: https://medium.com/#sergio13prez/connecting-to-mongodb-atlas-d1381f184369
Hope this helps.

Link mongoDB instance database to meteor local

I've recently setup an ec-2 instance to deploy a meteor application on AWS. My app works correctly with mongoDB database.
Now I want to connect my meteor project's database to the EC2 database and then I've tried some command lines :
start my meteor project with a new mongo url with the following command line : "MONGO_URL="mongodb://username:password#xx.xx.xxx.xxx:27017/Tasks" meteor" but it returns the following screen
connect to mongo with the other following command line :
"meteor mongo --url xx.xx.xxx.xxx:27017" but it returns a timeout. I thought it was due to the lack of username and password however when I add this option meteor does not assume the command.
connect to mongo in my js collection file with
"export const Tasks = mongoose.connect("mongodb://username:password#xx.xx.xxx.xxx:27017/Tasks").connection;" but it returns "Error: connect ECONNREFUSED" (second screen)
Is there any tips to manage to establish database connection from local meteor ?
Thank you for answer,
Martin
If the database and the Meteor processes are in the same machine, you can call it from "localhost".
MONGO_URL="mongodb://user:password#localhost/Tasks"
If you really want to use the IP + Port approach, you have to ensure that it's accessible from the EC2 Security Groups you're using.
The same applies for connecting manually in Mongoose but you should't be using Mongoose with Meteor, it has it's own way of handling collections. If you need something more powerful, or a way to extend it yourself checkout the Meteor Simple Schema project.

Resources