我正在尝试为我当地的狗公园创建一个简单的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变量的行。
这是我目前的解决方案,但实施它有点超出了我的能力。任何帮助都将不胜感激。
1条答案
按热度按时间hmmo2u0o1#
使用node的mongodbatlas的文档可以在这里找到
这是URI的正确格式
使用变量将uri存储为
const mongoUri = process.env.MONGODB_URI
或者我更喜欢这样:
然后将值添加到AWS帐户的相应变量/cli
在开发过程中,您可能希望在开发时使用dotENV来填充这些变量。