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

Mongoose模型创建完成后是否可以新增hook中间件?

结论:你编写的代码无法正常生效

原因说明

Mongoose 中间件(hook)必须在模型编译完成之前定义,一旦调用mongoose.model()完成模型编译,后续再修改对应 schema 新增pre/post钩子都不会被已生成的模型实例识别,因此不会触发。
你当前的操作是先获取已经编译完成的MyModel模型,再回溯获取关联 schema 添加 save 钩子,属于模型编译后新增 hook 的场景,因此该钩子不会在保存操作时执行。

在编译模型前定义中间件

通常来说,在Mongoose中编译完模型后调用pre()或post()方法不会生效,你编写的pre('save')中间件就属于不会触发的情况。

正确写法示例

所有钩子需要在调用mongoose.model()注册模型之前完成定义:

const mongoose = require('mongoose')
// 第一步:定义Schema
const UsuarioSchema = new mongoose.Schema({
  // 你的模型字段定义
})
// 第二步:添加所有需要的钩子
UsuarioSchema.pre('save', (next) => {
  console.log('working')
  next()        
})
// 第三步:编译模型
const MyModel = mongoose.model('MyModel', UsuarioSchema)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:39:00