You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Mongoose连接MongoDB时遇TypeError: mongoose.connection不是函数

解决Mongoose连接MongoDB时的TypeError: mongoose.connection is not a function错误

核心错误原因

mongoose.connection是一个属性对象(代表当前数据库连接实例),并非可调用的函数。你在index.js里错误地给它加了括号调用:mongoose.connection(),这直接导致了TypeError。

完整修复步骤

1. 修正index.js中的连接实例获取代码

把:

const conn = mongoose.connection();

改为:

const conn = mongoose.connection;

2. 修复db.js中的多个潜在问题

你的db.js里还有几个会导致连接失败或报错的问题:

  • mongoose.connect是异步操作,try/catch无法直接捕获其错误(因为没有等待异步完成)
  • 代码中未定义res,直接调用res.send(error)会触发新的错误
  • 配置参数useUnifiedToplogy拼写错误,正确拼写是useUnifiedTopology

修正后的db.js代码(.then/.catch版本):

const mongoose = require("mongoose");
const dotenv = require("dotenv");
dotenv.config();

module.exports = function connection() {
  const connectionParams = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
  };
  mongoose.connect(process.env.DB, connectionParams)
    .then(() => {
      console.log("数据库连接成功");
    })
    .catch((error) => {
      console.error("数据库连接失败:", error);
    });
};

如果偏好async/await写法,db.js可改为:

const mongoose = require("mongoose");
const dotenv = require("dotenv");
dotenv.config();

module.exports = async function connection() {
  try {
    const connectionParams = {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useCreateIndex: true,
    };
    await mongoose.connect(process.env.DB, connectionParams);
    console.log("数据库连接成功");
  } catch (error) {
    console.error("数据库连接失败:", error);
  }
};

对应index.js需要用异步函数包裹调用:

const mongoose = require("mongoose");
const connection = require("./DB/db");

(async () => {
  await connection();
  const conn = mongoose.connection;
})();

额外说明

可以通过监听连接事件确认状态:

const conn = mongoose.connection;
conn.on("connected", () => console.log("已连接到数据库"));
conn.on("disconnected", () => console.log("数据库连接已断开"));
conn.on("error", (err) => console.error("连接出错:", err));

内容的提问来源于stack exchange,提问作者Talc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:45:34