【发布时间】:2021-03-03 03:43:05
【问题描述】:
我正在为应用程序进行版本更改。我正在使用 mongoose 预挂钩根据版本控制要求在处理之前更改查询,我遇到了一种情况,我需要进行单独的查询以检查其他文档是否存在,如果它不存在必须执行当前查询,如下所示,
schema.pre('find', { document: false, query: true }, async function (next) {
const query = this.getQuery();
const doc = await model.find(query).exec();
if (!doc) {
const liveVersion = { ...query, version: "default" };
this.setQuery(liveVersion);
} else {
return doc;
}
});
在上面找到pre-hook,我正在尝试
- 使用查找查询检查数据库中是否存在所需的文档,如果确实存在则返回
- 如果文档不存在,我将通过设置基于默认版本的查询来执行查询。
这里的问题是 mongoose 无论如何都会执行 set 查询,它返回的结果也是我为 this.setQuery 得到的结果,而不是其他 DB 查询结果 (doc)。
有没有办法在 mongoose pre-hook 中停止默认查询执行?
任何帮助将不胜感激。
【问题讨论】:
标签: javascript node.js mongodb mongoose mongoose-plugins