繁体   English   中英

MongoDB 连接错误 nodejs express mongoose

[英]MongoDB connection error nodejs express mongoose

我是一个初学者,并试图用节点和快递和 mongoose 测试与 MongoDB 的一些基本连接,但找不到为什么返回为 undifined

我使用 dotenv 模块来使用 env 变量,任何建议

MongooseError: openUri()uri参数必须是字符串,得到“未定义”。 确保mongoose.connect()mongoose.createConnection()的第一个参数是一个字符串。

这是我的代码

// index.js

import app from './app'
import './database'

app.listen(app.get('port'))
console.log('Greetings from express')
// database.js

import mongoose from "mongoose";
import config from './config'

(async () => {
    const db = await mongoose.connect(config.mongodbURL, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });
    console.log('Database connected to:', db.connection.name);
})();
// config.js
import { config } from "dotenv";
config();

export default {
    mongodbURL: process.env.MONGODB_URI,
};
// .env
MONGODB_URI = mongodb://localhost/tasksapi

如果你不修改你的配置文件,那么你可能不需要你的config.js文件,你可以简单地在 index.js 中调用config() ,并且在它之后加载的任何文件都可以访问process.env

在这种情况下,您的代码将如下所示:

// index.js

import {config} from 'dotenv'
config()

import app from './app'
import './database'

app.listen(app.get('port'))
console.log('Greetings from express')
// database.js

import mongoose from "mongoose";
import config from './config'

(async () => {
    const db = await mongoose.connect(process.env.MONGODB_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });
    console.log('Database connected to:', db.connection.name);
})();

或者,如果您希望保留config.js ,那么在index.js中调用 dotenv 的config()也可以确保在 config.js 导出它们时加载您的 envvar。

是的,你在这里做什么

await mongoose.connect(config.mongodbURL,

将其更改为await mongoose.connect(process.env.mongodbURL,

并将 mongodb url 存储在您的 config.env 文件中,如下所示

mongodbURL=mongodb+srv://USERNAME:<PASSWORD>@cluster<CLUST>/<DBNAME?retryWrites=true&w=majority

,这对你有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM