gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:41 25 4
gpt4 key购买 nike

如果具有以下架构和中间件 Hook ,但 findfindOne Hook 永远不会被调用。 saveupdate Hook 按预期工作。根据Mongoose Middleware文档,这应该可用。

// 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");
});

最佳答案

问题最终出在项目的顺序上。显然,您必须在设置查找 Hook 后定义模型。但这对于保存和更新 Hook 来说不是必需的。

// 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);

关于node.js - Mongoose find 和 findOne 中间件不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30611991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com