当前位置: 首页 > 知识库问答 >
问题:

在加载mongo数据库和前端应用程序时面临的问题

慕容宏毅
2023-03-14

我正在创建一个匿名讨论论坛,在那里我使用Heroku在MongoDB Atlas(云平台)上部署了我的MongoDB。整个应用程序是使用React开发的。这是我的server.js代码:

var express = require('express');
const path = require('path');

var mongoose = require('mongoose');
var bodyParser = require('body-parser');

var models = require('./api/models/message');

var routes = require('./api/routes/routes');

var port = process.env.PORT || 3001;
var app = express();
var Message = mongoose.model('Message')

// Uncomment this line to run it on development mode (localhost) -- discussion is our db name //
// mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/discussion');

// This line is working on production mode //
mongoose.connect(process.env.MONGODB_URI || 'mongodb+srv://xxx:xxx@cluster0-xucmg.mongodb.net/test?retryWrites=true&w=majority');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

routes(app);

if (process.env.NODE_ENV === "production") {
  app.use(express.static("frontend/build"));
  console.log("production");
}

app.get('*', function (request, response){
  response.sendFile(path.resolve(__dirname, 'frontend/build', 'index.html'))
});

app.listen(port);

console.log('Server running on port ' + port);

我的库名是讨论。当这一行未注释时:

mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost/discussion');

数据库加载良好,前端代码在localhost上也能正常工作。

但我正在尝试使用以下行将我的数据库托管在云上(以解决Heroku构建的问题):

mongoose.connect(process.env.MONGODB_URI || 'mongodb+srv://xxx:xxx@cluster0-xucmg.mongodb.net/test?retryWrites=true&w=majority');

我不确定为什么因为这一行,前端部分没有被加载(在Heroku部署链接上)。我想这可能是因为数据库没有被加载。但是,如果有人能帮我解决这个问题,那将是一个很大的帮助。我试图遵循这个解决方案:通过提供白名单访问将Heroku应用程序连接到Atlas MongoDB云服务,但问题仍然存在。

共有1个答案

公冶高义
2023-03-14

我通过更新mongoose依赖项版本修复了此问题

即使在MongoDB Atlas的IP白名单中添加了CIDR作为0.0.0.0/0,更新猫鼬版本也将有助于克服此类问题。

 类似资料:
  • 我想在应用程序启动时使用Spring ehCache将数据从数据库加载到缓存中,即在调用任何其他方法之前服务器启动时。我不想使用构造函数。请帮帮我。

  • 我正在制作一个应用程序,我正在使用Android Room持久性库来处理我的数据库层。房间图书馆的工作像魅力和一切都很好与它。但我希望当用户卸载应用程序时,room创建的数据库被删除。我试着卸载了app,然后重新安装,但不知怎么数据库还在,app还能从中获取旧数据。 编辑我知道我可以使用意图使我的应用程序知道卸载。我想知道的是,是否有的配置来完成这项工作,以及如何在卸载应用程序后数据库仍然存在。

  • 我需要你在这个问题上给我建议,在一个spring boot应用程序中,我从数据库加载一些属性,比如(cron periods,email data),我需要在应用程序上下文中导出这些属性,以便用加载的数据来spring构建相应的beans。我怎么能这样做?

  • 我正在尝试在我的多租户应用程序中实现假客户概念。我有两个微服务。在其中一个微服务中,我编写了从数据库获取数据的API。我需要在我的其他微服务中使用这些数据。为此,我使用了假客户概念。我需要第二个微服务加载期间的数据。但这并没有发生。我有以下错误 这是我的基于数据源的MultitenantConnectionProviderImpl。类,我在其中编写了伪客户机逻辑 这是一个虚拟客户端。我将第二个微服

  • 蛋白质和非蛋白质是由它们的编码来表示的。 我编写的python程序的目的是从用户那里获取代码,它应该搜索两个数据库表,并判断是否属于蛋白质、非蛋白质或两者都不属于。代码如下: 但是,在输出中,每当我输入一个代码,它只是被归类到一个蛋白质。它从不去“非蛋白质”或“无”部分。你能帮我解释一下为什么会这样吗? 输出如下:

  • 我刚创建了一个新的颤振应用程序,我刚开始安装android studio,但我遇到了这些问题。正在启动lib\main。调试模式下TECNO KE5k上的dart。。。正在运行Gradle任务“assembleDebug”。。。 失败:构建失败,但有一个异常。 错误:配置根项目“android”时出现问题 无法解析配置“: classpath”的所有工件。无法解析com.android.tools