我正在为应用程序进行版本控制更改。我正在使用 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;
}
});
在上面的 find pre-hook 中,我正在尝试
- 使用查找查询检查数据库中是否存在所需的文档,如果确实存在则返回
- 如果文档不存在,我将通过设置基于默认版本的查询来执行查询。
这里的问题是 mongoose 无论如何都会执行 set 查询,它返回的结果也是我得到的this.setQuery
结果,而不是其他 DB 查询结果(doc
)。
有没有办法停止猫鼬预钩子中的默认查询执行?
任何帮助将不胜感激。