[英]NodeJS + Express + Mongoose(MongoDB) Database Insert Error
[英]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.