【发布时间】:2020-11-21 10:07:17
【问题描述】:
我使用 React、Nodejs 和 Mongodb 作为数据库创建了一个 webapp。我现在正在使用免费的 MongoDB Atlas 数据库,所以我在那里创建了一个帐户和一个数据库,然后我将它与我的节点/快速服务器连接。
我的应用程序运行良好,我能够注册/登录用户并获取数据等。但是,第一个请求总是需要很长时间才能完成。我现在在 Heroku 上免费部署了该应用程序。当我打开应用程序并尝试登录时,第一个请求大约需要 20 秒才能完成并登录用户。在那之后,一切都运行得又快又好,所以这真的只是第一次开始。
由于我的应用程序正在运行,我不知道这里有什么问题。我唯一的猜测是这个问题特定于 MongoDB Atlas 及其免费数据库。
这是我用来连接数据库的代码,非常简单:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
mongoose.connect(MONGODB_HOST, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true,
useCreateIndex: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
【问题讨论】:
-
你能分享替换用户、密码和集群 ID 的连接字符串吗?应该看起来像
mongodb+srv://user:pass@clusterID.mongodb.net/?options。根据我的经验,它可能需要 1 或 2 秒,除非有什么叮当声 -
@Minsky 是的。这是我的连接字符串的样子:“mongodb+srv://user:pass@clusterID.mongodb.net/dbname?retryWrites=true&w=majority”
-
@Minsky 创建数据库时,我只是从 mongoDB Atlas 网站复制粘贴了这个
-
尝试在选项中添加
family:4 -
@Minsky 感谢您的建议,但没有奏效。第一个请求仍然需要约 30 秒。令人困惑的是,它在第一次请求之后运行得非常快。每次都像是一个奇怪的冷启动。感觉长时间不使用mongodb atlas的连接消失了!
标签: node.js mongodb express mongodb-atlas mongodb-atlas-search