如何在node server.js中定义Mongo Atlas connectionString?

iih3973s  于 2023-04-05  发布在  Node.js
关注(0)|答案(1)|浏览(92)

我正在尝试为我当地的狗公园创建一个简单的Web应用程序。
该网络应用程序将允许用户输入他们的名字,他们的狗的名字,以及他们计划参加的时间。提交的内容将显示在一个网页上,供其他人查看,以便人们可以知道谁会去,更好地计划见面。
我为网站创建了HTML/Javascript代码。我得到了一个运行Express的Node.Js服务器。我用MongoDB Atlas旋转了一个数据库。为了将前端连接到后端,我试图在AWS Elastic Beanstalk上运行Node应用程序。这是我遇到问题的地方。我的应用程序将启动,但其健康状况将被标记为关键。
我看了一下日志,似乎这是我的问题:“错误消息指示未定义connectionString变量。您应该在server.js文件中定义该变量,并确保它包含正确的MongoDB连接字符串。”
日志在这里-https://pastebin.com/RpcZdqzv
Server.js代码如下

const express = require('express');
const cors = require('cors');
const MongoClient = require('mongodb').MongoClient;
const mongoose = require('mongoose');
const app = express();
const port = process.env.PORT || 3000;

app.use(cors());
app.use(express.json());

const uri = "mongodb+srv://MYNAME+MYPASSWORD.s25gw.mongodb.net/dog-park-db?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

// Add the routes from app.js here
// ...

mongoose.connect(connectionString, {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => {
  console.log('Connected to MongoDB');
})
.catch((error) => {
  console.error('Error connecting to MongoDB:', error);
});

const testSchema = new mongoose.Schema({
  message: String
});

const Test = mongoose.model('Test', testSchema);

app.get('/', async (req, res) => {
  try {
    const testDoc = new Test({ message: 'Hello, MongoDB Atlas!' });
    const savedDoc = await testDoc.save();
    res.send(savedDoc);
  } catch (error) {
    res.status(500).send({ error: 'Error connecting to MongoDB Atlas' });
  }
});

client.connect().then(() => {
    app.listen(port, () => {
        console.log(`App listening at http://localhost:${port}`);
    });
}).catch(console.error);

为了解决这个问题,我相信我想在server.js文件中定义变量,并确保它包含正确的MongoDB连接字符串。我想确保我已经在Elastic Beanstalk环境配置中包含了必要的环境变量,然后通过AWS管理控制台或使用AWS CLI设置环境变量。我需要将变量命名为MONGODB_URI并将其值设置为我的MongoDB连接字符串。然后,我想修改我的server.js文件以使用MONGODB_URI环境变量并替换初始化connectionString变量的行。
这是我目前的解决方案,但实施它有点超出了我的能力。任何帮助都将不胜感激。

hmmo2u0o

hmmo2u0o1#

使用node的mongodbatlas的文档可以在这里找到
这是URI的正确格式

mongodb://username:password@host1:port1,...,hostN:portN/database?authSource=admin&...

使用变量将uri存储为const mongoUri = process.env.MONGODB_URI
或者我更喜欢这样:

const dbname = process.env.DBNAME
const mongoUser = process.env.MONGOUSER
const mongoPassword = process.env.MONGOPASSWORD
const uri = `mongodb+srv://${mongoUser}:${mongoPassword}@yourhost/${dbname}?retryWrites=true&w=majority`
const client = new MongoClient(uri....

然后将值添加到AWS帐户的相应变量/cli
在开发过程中,您可能希望在开发时使用dotENV来填充这些变量。

相关问题