用途:该技能为在 MongoDB 上使用 Mongoose ODM 提供现代准则,重点覆盖 Mongoose 8.x/9.x、严格的 TypeScript 集成以及 2025 年生态下的性能优化。
主要能力与要点:
- TypeScript 优先:Mongoose 8+ 具备更好的内置类型推断,@types/mongoose 已过时。建议不要扩展 Document,而是定义普通接口(如 IUser),用 Schema<IUser> 与 model<IUser> 让 Mongoose 自动推断 HydratedDocument 类型。
- 性能优化:只读操作始终使用 .lean(),可跳过 hydration,加快查询;在 schema 中定义复合索引(如 userSchema.index({ organization: 1, email: 1 }));使用投影只取所需字段(如 User.find({}, { name: 1 }).lean())。
- 连接管理:在无服务器/边缘环境(如 Vercel、Next.js、Remix)使用带缓存的单例模式,避免连接耗尽;示例中通过 global 缓存连接与 promise,并设置 bufferCommands: false。
- 现代 JavaScript:支持 async/await 迭代器与原生 Promise。
使用方式:按资料示例定义普通接口与 schema,使用 mongoose.models.User || model<IUser>('User', userSchema) 导出模型;查询时对只读场景附加 .lean(),并在 schema 上声明索引与投影。连接处调用 connectDb() 复用缓存连接。
限制:资料未提供具体安装命令、版本兼容细节、收费与价格、实际性能数值来源,也未给出向量搜索的具体 API 用法。