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

将Mongoose模型移至TS引用项目后出现缓冲超时问题求助

排查Mongoose查询缓冲超时问题的思路

针对你把模型移到TypeScript引用项目后出现的MongooseError: Operation amounttypes.find() buffering timed out after 10000ms错误,核心原因是模型没有关联到有效的数据库连接,下面是具体排查和解决步骤:

1. 优先解决Mongoose多实例问题

你主项目用的是mongoose@7.0.4,模型项目单独安装了mongoose@7.2.2,这会导致两个项目加载各自独立的Mongoose实例:

  • 主项目建立的连接属于自己的Mongoose实例
  • 模型项目的模型会绑定到自身实例的默认连接(这个连接根本没初始化)
  • 最终查询时模型找不到可用连接,触发缓冲超时

解决方法:
修改shoppingcard-models的package.json,将mongoose改为peer依赖,让模型项目复用主项目的Mongoose实例:

{
  // ...其他配置
  "peerDependencies": {
    "mongoose": "^7.x"
  },
  "devDependencies": {
    "mongoose": "^7.x"
  }
}

然后重新安装主项目的依赖,确保模型项目不会单独安装mongoose。

2. 修正TypeScript项目引用的构建逻辑

主项目的tsconfig.json配置了项目引用,但build脚本只是tsc,没有触发关联项目的构建,可能导致模型项目的代码未被编译,加载时出现异常:

解决方法:
修改主项目package.json的build脚本:

"scripts": {
  // ...其他脚本
  "build": "tsc --build"
}

tsc --build会自动构建所有在references中声明的项目,确保模型项目的编译产物能被主项目正确加载。

3. 确保模型关联到主项目的数据库连接

如果模型在单独项目中直接定义为Mongoose模型,它会默认使用自身Mongoose实例的连接,而不是主项目的连接。可以改为导出Schema,由主项目用自己的Mongoose实例创建模型:

模型项目(shoppingcard-models):

// src/amounttype.ts
import { Schema } from 'mongoose';

export const AmountTypeSchema = new Schema({
  // 你的Schema定义
});

主项目(shoppingcard-api):

// 确保先初始化连接
import mongoose from 'mongoose';
import { AmountTypeSchema } from '../shoppingcard-models';

// 用主项目的Mongoose实例创建模型
export const AmountType = mongoose.model('AmountType', AmountTypeSchema);

这样模型就会绑定到主项目已建立的数据库连接上。

4. 检查数据库连接的初始化时机

确保在加载模型和启动路由之前,数据库连接已经成功建立。可以在连接成功后再启动服务器:

// app.ts
import mongoose from 'mongoose';
import dotenv from 'dotenv';

dotenv.config();

mongoose.connect(process.env.MONGO_URI!)
  .then(() => {
    console.log('MongoDB连接成功');
    // 在这里加载模型、路由,然后启动服务器
    import('./routes').then(routes => {
      app.use('/api', routes.default);
      app.listen(8080, () => {
        console.log('服务器启动在8080端口');
      });
    });
  })
  .catch(err => {
    console.error('MongoDB连接失败:', err);
    process.exit(1);
  });

内容的提问来源于stack exchange,提问作者Papp Zoltán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:20:35