无法将node.js应用程序与mongodb atlas连接

guz6ccqo  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(456)

我已经在mongodb atlas中创建了一个新集群,但我无法将node.js应用程序与之连接。我是后端新手,正在学习mongodb。

  1. Error: querySrv ENODATA _mongodb._tcp.cluster0.onw2w.mongodb.net
  2. at QueryReqWrap.onresolve [as oncomplete] (dns.js:206:19) {
  3. errno: undefined,
  4. code: 'ENODATA',
  5. syscall: 'querySrv',
  6. hostname: '_mongodb._tcp.cluster0.onw2w.mongodb.net'
  7. }

服务器正在成功运行。在连接到atlas之前,我的应用程序正在运行。我从一开始就再次创建了一个新集群,这样我可以确保在创建集群时没有出错。
server.js文件

  1. const mongoose = require('mongoose');
  2. const dotenv = require('dotenv');
  3. const app = require('./app');
  4. dotenv.config({ path: './config.env' });
  5. const DB = process.env.DATABASE.replace(
  6. '<PASSWORD>',
  7. process.env.DATABASE_PASSWORD
  8. );
  9. mongoose
  10. .connect(DB, {
  11. useNewUrlParser: true,
  12. useCreateIndex: true,
  13. useFindAndModify: false,
  14. useUnifiedTopology: true,
  15. })
  16. .then((con) => console.log('DB connection successful🍾....'))
  17. .catch((error) => console.log(error));
  18. const tourSchema = new mongoose.Schema({
  19. // to specify a schema for our model
  20. name: {
  21. type: String,
  22. require: [true, 'A tour must have a name'], // validator
  23. unique: true,
  24. },
  25. rating: {
  26. type: Number,
  27. require: 4.5,
  28. },
  29. price: {
  30. type: Number,
  31. require: [true, 'A tour must have a price'],
  32. },
  33. });
  34. const Tour = mongoose.model('Tour', tourSchema);
  35. const testTour = new Tour({
  36. // it is an instance of the tour model
  37. name: 'The forest Hiker',
  38. rating: 4.7,
  39. price: 497,
  40. });
  41. testTour
  42. .save() // this will save the data in the Tour collection in the database it will return a promise
  43. .then(doc => console.log(doc))
  44. .catch(err=> console.log('error: ', err))
  45. const port = process.env.PORT || 8000;
  46. app.listen(port, '127.0.0.1', () => {
  47. console.log(`server running on port ${port}🎈.......`);
  48. });

.env文件

  1. NODE_ENV=devlopment
  2. PORT=8000
  3. USERNMAE=IrfanAsif
  4. DATABASE_PASSWORD=zAC8yIHLJIegJHSQ
  5. DATABASE=mongodb+srv://irfan:<PASSWORD>@cluster0.onw2w.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
8cdiaqws

8cdiaqws1#

因此,首先,我不认为有任何特殊的理由将密码保留在db连接字符串之外,因为它位于.env变量中,所以最终用户或无法访问服务器文件的任何人都无法使用它。
对于您的问题,您是否可以将proccess.env.database和密码登录到console,以确保其正确输出?因为您的回调和承诺解析似乎是正确的,所以应该是配置问题。

相关问题