Entonces en mi aplicación puedo conectarme a mongodb
const mongoose = require('mongoose'); const dotenv = require('dotenv'); const app = require('./app'); dotenv.config({ path: './config.env' }); const DB = process.env.DATABASE.replace( '<PASSWORD>', process.env.DATABASE_PASSWORD ); mongoose // .connect(process.env.DATABASE_LOCAL, { .connect(DB, { useNewUrlParser: true, useCreateIndex: true, useFindAndModify: false, useUnifiedTopology: true, }) .then(() => { console.log('DB connection successful!'); }); const tourSchema = new mongoose.Schema({ name: { type: String, required: [true, 'A tour must have a name'], unique: true, }, rating: { type: Number, default: 4.5, }, price: { type: Number, required: [true, 'A tour must have a price'], }, }); const Tour = mongoose.model('Tour', tourSchema); const testTour = new Tour({ name: 'Meteora tour', rating: 4.9, price: 189, }); testTour .save() .then((doc) => { console.log(doc); }) .catch((err) => { console.log('Error'); }); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`App running on port ${port}...`); });Y como puede ver en el logcat, la conexión es exitosa y se almacena un objeto de prueba.
App running on port 8000... DB connection successful! { rating: 4.9, _id: 61a67242927cc71a57b2a49f, name: 'Meteora tour', price: 189, __v: 0 }Aquí está mi archivo env.
NODE_ENV=development PORT=8000 USERNAME=Theo DATABASE=mongodb+srv://Theo:<PASSWORD>@cluster0.5k97r.mongodb.net/natours?retryWrites=true&w=majority DATABASE_LOCAL=mongodb://localhost:27107/natours DATABASE_PASSWORD=...Ahora quiero probar algo diferente. Quiero ejecutar mongodb desde la terminal. entonces escribo
mongo "mongodb+srv://cluster0.5k97r.mongodb.net/natours" --username Theopero estoy recuperando esto
connecting to: mongodb://cluster0-shard-00-00.5k97r.mongodb.net:27017,cluster0- shard-00-01.5k97r.mongodb.net:27017,cluster0-shard-00-02.5k97r.mongodb.net:27017/natours?authSource=admin&compressors=disabled&gssapiServiceName=mongodb&replicaSet=atlas-axen7p-shard-0&ssl=true *** It looks like this is a MongoDB Atlas cluster. Please ensure that your IP whitelist allows connections from your network. Error: can't connect to new replica set master [cluster0-shard-00-02.5k97r.mongodb.net:27017], err: AuthenticationFailed: bad auth : Authentication failed. : connect@src/mongo/shell/mongo.js:362:17 @(connect):2:6 exception: connect failed exiting with code 1¿Cómo es esto posible? En mi aplicación no tengo problemas para conectarme en MongoDB Atlas. He incluido en la lista blanca mi dirección IP.
Gracias, Teo.