MONGO_URL 是什么,它应该设置成什么?

What is MONGO_URL and what should it be set to?

我从 GitHub 下载了一些代码到 运行 在我的机器上本地并使用它。这是第一次下载或使用 MongoDB。我按照说明从 this website 下载 MongoDB。然后我确保使用 sudo service mongod start 命令启动 MongoDB。

启动后,我 运行 使用 node application.js 命令从 GitHub 下载的项目。我得到一个错误:

throw new MongooseError('The `uri` parameter to `openUri()` must be a ' +
MongooseError: The `uri` parameter to `openUri()` must be a string, got "undefined". Make sure the first parameter to `mongoose.connect()` or `mongoose.createConnection()` is a string.

据我所知,我下载的代码有这样的连接语句:

mongoose.connect(process.env.MONGO_URL, { useNewUrlParser: true }, function (err) {
    if (err) {
        console.log("connection error:", err);
    } else {
        console.log("MongoDB connection successful");
    }
});

我好像找不到 MONGO_URL。做了一些谷歌搜索,我看到很多人提到流星,但我没有使用它。根据我收集到的信息,这是 MongoDB 用于连接到我机器上 运行ning 的本地数据库的路径。但是,这不会在项目中或安装过程中的任何位置设置。

我的理解对吗?听起来我需要在我的 Linux 机器上定义一个新的环境变量。这个变量应该设置成什么?我计划只 运行 在我的机器上运行这个项目以供学习。

谢谢大家的帮助!

如果你的数据库在本地机器上,那么你需要做的,

mongoose.connect('mongodb://localhost:27017/myapp', {useNewUrlParser: true});

如果在您的计算机上连接失败,请尝试使用 127.0.0.1 而不是 localhost。

mongoose.connection() 需要 3 values

Connection.prototype.openUri = function(uri, options, callback) {
    …
};

throw new MongooseError('The uri parameter to openUri() must be a ' + MongooseError: The uri parameter to openUri() must be a string, got "undefined". Make sure the first parameter to mongoose.connect() or mongoose.createConnection() is a string

根据您的错误消息,您传递的 uri 结果是 undefined。如果您没有为它赋值,就会发生这种情况。

能否请您记录 process.env.MONGO_URL 的值并查看该值。

console.log(‘Connection url => ’, process.env.MONGO_URL);

因为你已经安装了 mongo 数据库,它会默认 运行 在 mongodb://localhost:27017 url.

您可以考虑传递诸如环境值之类的值,而不是对连接进行硬编码url

如果你只有一个环境值,你可以随安装一起传递它

MONGO_URL=mongodb://localhost:27017 node index.js 

如果每个应用程序有超过 2-3 个环境变量或多个应用程序都使用环境变量,它会很快用太多值污染您的环境。您可以使用 dotenv 使用 .env 文件

配置它们

安装dotenv。在项目根目录下创建.env文件,在.gitignore

忽略

.env

MONGO_URL=mongodb://localhost:27017

在您的代码中,

const dotenv = require('dotenv').config();
console.log(process.env.MONGO_URL); //you can access it straight way

我们这样做是为了 stricly separate config from code,这将帮助我们避免将敏感细节登记到 GitHub

你可以看看a sample project where I've configured上面的详细内容

查看我的回答 , I was using jest-mongodb 我的问题是在 globalSetup 中尝试使用尚未初始化的环境变量..