类型错误:无法读取未定义的属性(读取“主机”)

问题描述 投票:0回答:3

我不断收到该错误,但不知道为什么。我尝试连接到我的 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;

如果我遗漏了什么,请告诉我。

谢谢!

javascript node.js mongodb nosql
3个回答
3
投票

你应该

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;

0
投票

该错误可能是因为

conn.connection
为空,并且您正在尝试访问其上的属性
host

尝试记录

conn
而不是
conn.connection.host


0
投票

您收到该错误,因为没有使用await,并且编译后没有为“conn”分配任何值,因为mongodb连接需要时间

© www.soinside.com 2019 - 2024. All rights reserved.