node.js - 无法将 Node.js 应用程序与 MongoDB Atlas 连接
问题描述
我在 MongoDB Atlas中创建了一个新集群,但我无法将我的 node.js 应用程序与它连接起来。我是后端新手,正在学习 MongoDB。
Error: querySrv ENODATA _mongodb._tcp.cluster0.onw2w.mongodb.net
at QueryReqWrap.onresolve [as oncomplete] (dns.js:206:19) {
errno: undefined,
code: 'ENODATA',
syscall: 'querySrv',
hostname: '_mongodb._tcp.cluster0.onw2w.mongodb.net'
}
服务器正在成功运行。在连接到 Atlas 之前,我的应用程序正在运行。我再次从头创建了一个新集群,以便确保在创建集群时没有出错。
server.js 文件
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(DB, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false,
useUnifiedTopology: true,
})
.then((con) => console.log('DB connection successful....'))
.catch((error) => console.log(error));
const tourSchema = new mongoose.Schema({
// to specify a schema for our model
name: {
type: String,
require: [true, 'A tour must have a name'], // validator
unique: true,
},
rating: {
type: Number,
require: 4.5,
},
price: {
type: Number,
require: [true, 'A tour must have a price'],
},
});
const Tour = mongoose.model('Tour', tourSchema);
const testTour = new Tour({
// it is an instance of the tour model
name: 'The forest Hiker',
rating: 4.7,
price: 497,
});
testTour
.save() // this will save the data in the Tour collection in the database it will return a promise
.then(doc => console.log(doc))
.catch(err=> console.log('error: ', err))
const port = process.env.PORT || 8000;
app.listen(port, '127.0.0.1', () => {
console.log(`server running on port ${port}.......`);
});
.env 文件
NODE_ENV=devlopment
PORT=8000
USERNMAE=IrfanAsif
DATABASE_PASSWORD=zAC8yIHLJIegJHSQ
DATABASE=mongodb+srv://irfan:<PASSWORD>@cluster0.onw2w.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
解决方案
所以首先我看不出有什么特别的理由将密码保存在数据库连接字符串之外,因为它在 .env 变量中,所以最终用户或任何无法访问服务器的人都不会有任何机会文件。
对于您的问题,您能否将 proccess.env.DATABASE 和密码记录到控制台,以确保它正确地打印出来?由于您的回调和承诺解决似乎没问题,应该是配置问题。
推荐阅读
- c# - 带注释的绘图必须保持在 WPF 中的相同位置
- javascript - 如何在 jQuery 中选择正确的元素
- python - 如何通过一些额外的列对 Pandas DataFrame 中的新数据进行预测?
- typescript - 如何替换innerHtml Angular 8中的标签
- sql - 如何在 SQL Server 中动态将行转换为列?
- c++ - 无法使用指向指针的指针的值获得相同的指针值?
- sql - 如何将用户列表保存到数据库 asp.net Web 表单
- npm - 我无法运行完整的代码“npm install”
- python - 在 Pipenv 中更新
- mysql - 为什么相同的 mysql sql 在 5.6 和 5.7 之间有两个关于 icp 的结果