首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对所有查询中间件执行中间件功能

对所有查询中间件执行中间件功能
EN

Stack Overflow用户
提问于 2022-07-03 12:29:37
回答 1查看 67关注 0票数 1

根据猫鼬关于中间件这里的文档

下面的模型和查询函数支持查询中间件。在查询中间件功能中,这是指查询。

  • 计数
  • countDocuments
  • deleteMany
  • deleteOne
  • estimatedDocumentCount
  • 发现
  • findOne
  • findOneAndDelete
  • findOneAndRemove
  • findOneAndReplace
  • findOneAndUpdate
  • 删除
  • replaceOne
  • 更新
  • updateOne
  • updateMany

这意味着我可以编写像下面这样的中间件,只要调用findOneAndUpdate方法,它就会执行:

代码语言:javascript
复制
mySchema.pre('findOneAndUpdate', function(next){
const query = this
console.log("called the pre-findOneAndUpdate middleware and hello");
})

现在,如果我想让上面的console.log在pre('count')、pre('replaceOne')、pre('findOneAndRemove')...etc上打印它的输出,我将不得不写得太多了。

是否有办法这样做:

代码语言:javascript
复制
mySchema.pre('*', function(next){
const query = this
console.log("called the pre-* middleware and hello");
})

其中*指引号中长列表中列出的任何方法

??

EN

回答 1

Stack Overflow用户

发布于 2022-07-03 17:38:50

看来没有这样的可能

您可以动态地构造它。

您可以在这里获取一个方法列表:https://github.com/Automattic/mongoose/blob/c5893fa9f6d652d2bed08a52ad58f0f875e34bb4/lib/helpers/query/validOps.js

(我在图书馆里找不到)

然后传递该数组,或使用循环构造每个方法:

代码语言:javascript
复制
// https://github.com/Automattic/mongoose/blob/c5893fa9f6d652d2bed08a52ad58f0f875e34bb4/lib/helpers/query/validOps.js
const validOps = [
    // Read
    'count',
    'countDocuments',
    'distinct',
    'estimatedDocumentCount',
    'find',
    'findOne',
    // Update
    'findOneAndReplace',
    'findOneAndUpdate',
    'replaceOne',
    'update',
    'updateMany',
    'updateOne',
    // Delete
    'deleteMany',
    'deleteOne',
    'findOneAndDelete',
    'findOneAndRemove',
    'remove'
]

mySchema.pre(validOps, function(next) {
    //...
})

// or        
for (const method of validOps) {
    mySchema.pre(method, function(next) {
        const query = this;
        console.log(`called the pre-${method} middleware and hello`);
    })
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72846521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档