我不断收到该错误,但不知道为什么。我尝试连接到我的 mongodb 数据库,但它一直告诉我“主机”未定义!
这是我的文件:
索引.js
const express = require("express");
const dotenv = require("dotenv");
const connectDB = require("./config/db");
//Load config
dotenv.config({ path: "./config/config.env" });
console.log("hello");
connectDB();
const app = express();
const PORT = process.env.PORT || 3000;
app.listen(
PORT,
console.log(`server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
);
错误出现在 db.js 第 11 行
const mongoose = require("mongoose");
const connectDB = async () => {
try {
const conn = mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
// useFindAndModify: false,
});
console.log("hey!");
console.log(`MongoDB connecteed: ${conn.connection.host}`);
} catch (err) {
console.error(err);
process.exit(1);
}
};
module.exports = connectDB;
如果我遗漏了什么,请告诉我。
谢谢!
你应该
await
mongoose.connect
返回一个 Promise
:
const mongoose = require("mongoose");
const connectDB = async () => {
try {
const conn = await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
// useFindAndModify: false,
});
console.log(`MongoDB connecteed: ${conn.connection.host}`);
} catch (err) {
console.error(err);
process.exit(1);
}
};
module.exports = connectDB;
该错误可能是因为
conn.connection
为空,并且您正在尝试访问其上的属性 host
。
尝试记录
conn
而不是 conn.connection.host
。
您收到该错误,因为没有使用await,并且编译后没有为“conn”分配任何值,因为mongodb连接需要时间