什么是MONGO_URL,应设置为什么?

时间:2019-04-10 02:53:13

标签: node.js mongodb express mean-stack

我从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用于连接到我的计算机上运行的本地数据库的路径。但是,未在项目中或安装过程中的任何地方设置该值。

我的理解正确吗?听起来我需要在Linux机器上定义一个新的环境变量。该变量应设置为什么?我计划仅出于学习目的在计算机上运行此项目。

谢谢大家的帮助!

3 个答案:

答案 0 :(得分:1)

如果您的数据库位于本地计算机上,则需要这样做,

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

如果计算机连接失败,请尝试使用127.0.0.1代替localhost。

答案 1 :(得分:1)

mongoose.connection()需要3 values

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

抛出新的MongooseError('uri的{​​{1}}参数必须是'+   MongooseError: openUri()的{​​{1}}参数必须是字符串,为“未定义” 。确保uriopenUri()的第一个参数是字符串

根据错误消息的建议,您传递的mongoose.connect()就是mongoose.createConnection()。如果您没有价值,就会发生这种情况。

能否请您记录uri的值并查看该值。

undefined

安装完mongo数据库后,默认情况下它将在process.env.MONGO_URL网址中运行。

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

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

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

如果每个应用程序有2-3个以上的环境变量,或者每个都使用环境变量的多个应用程序,它会很快用太多值污染环境。您可以使用dotenv通过mongodb://localhost:27017文件进行配置

安装dotenv。在项目的根目录和ignore it in .gitignore

处创建一个MONGO_URL=mongodb://localhost:27017 node index.js 文件

.env

.env

在您的代码中

.env

我们正在对stricly separate config from code进行此操作,这将有助于我们避免将敏感细节检入GitHub

您可以查看a sample project在上面configured处的详细信息。

答案 2 :(得分:0)

请参阅我的答案HERE,我正在使用jest-mongodb,而我的问题是试图在globalSetup中使用尚未初始化的环境变量。