Node.js Mongoose find和findOne中间件不工作

Node.js Mongoose find和findOne中间件不工作,node.js,mongoose,find,middleware,Node.js,Mongoose,Find,Middleware,If具有以下模式和中间件挂钩,但从未调用find和findOne挂钩。保存和更新钩子按预期工作。根据文件,这应该是可用的 // define the schema for our recs model var recSchema = mongoose.Schema({ dis: String, // rec display mod: String // modified date (HAYSTACK FORMAT) }, { strict: false }); // crea

If具有以下模式和中间件挂钩,但从未调用
find
findOne
挂钩。
保存
更新
钩子按预期工作。根据文件,这应该是可用的

// define the schema for our recs model
var recSchema = mongoose.Schema({
  dis: String,  // rec display
  mod: String   // modified date (HAYSTACK FORMAT)
}, {
  strict: false
});

// create the model for recs
var model = recsdb.model('recs', recSchema);

recSchema.pre('save', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('update', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('find', function() {
  console.log("Pre Find");
});
recSchema.pre('findOne', function() {
  console.log("Pre Find One");
});
recSchema.post('find', function() {
  console.log("Post Find");
});
recSchema.post('findOne', function() {
  console.log("Post Find One");
});

问题最终成了项目的顺序。显然,您必须在设置find钩子之后定义模型。不过,保存和更新挂钩不需要这样做

// define the schema for our recs model
var recSchema = mongoose.Schema({
  dis: String,  // rec display
  mod: String   // modified date (HAYSTACK FORMAT)
}, {
  strict: false
});

recSchema.pre('save', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('update', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('find', function(next) {
  console.log("Pre Find");
  next();
});
recSchema.pre('findOne', function(next) {
  console.log("Pre Find One");
  next();
});
recSchema.post('find', function(doc) {
  console.log("Post Find");
});
recSchema.post('findOne', function(doc) {
  console.log("Post Find One");
});

// create the model for recs
var model = recsdb.model('recs', recSchema);

问题最终成了项目的顺序。显然,您必须在设置find钩子之后定义模型。不过,保存和更新挂钩不需要这样做

// define the schema for our recs model
var recSchema = mongoose.Schema({
  dis: String,  // rec display
  mod: String   // modified date (HAYSTACK FORMAT)
}, {
  strict: false
});

recSchema.pre('save', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('update', function(next) {
  this.mod = HDateTime.now(HTimeZone.UTC).toZinc();
  next();
});
recSchema.pre('find', function(next) {
  console.log("Pre Find");
  next();
});
recSchema.pre('findOne', function(next) {
  console.log("Pre Find One");
  next();
});
recSchema.post('find', function(doc) {
  console.log("Post Find");
});
recSchema.post('findOne', function(doc) {
  console.log("Post Find One");
});

// create the model for recs
var model = recsdb.model('recs', recSchema);

你如何验证它不起作用?你有哪个mongoose版本?根据你的评论更新,以确保我使用的是4.0.x。我现在使用的是4.0.4,但仍然没有。我通过执行find和findOne验证了它不起作用,并且控制台中没有输出。您还可以演示实例化
模型的代码吗?我目前的猜测是,您没有使用订阅事件的模式来创建模型。正如在robertklep的注册模式中,上面的代码是如何验证它不起作用的?您有哪个mongoose版本?根据您的评论进行更新,以确保我使用的是4.0.x。我现在使用的是4.0.4,但仍然没有。我通过执行find和findOne验证了它不起作用,并且控制台中没有输出。您还可以演示实例化
模型的代码吗?我目前的猜测是,您没有使用订阅事件的模式来创建模型。正如robertklep的gistAdded schema to code AboverYep一样,如果您在构建模型后对该模式进行了更改,并且成功了,那么您就幸运了。:)是的,如果您在从模式构建模型后对其进行了更改,并且成功了,那么您就幸运了。:)