mongodb 在Mongoose“pre”和“post”钩子中获取请求标识符

goucqfw6  于 2022-12-29  发布在  Go
关注(0)|答案(1)|浏览(131)

我正在使用 Mongoose (最新版本),类型脚本(NestJS)。
我正在使用“pre”和“post”钩子收集一些关于查询的指标,以测量查询时间(包括网络延迟)。我已经添加了一个“pre”钩子,它应该启动一个计时器,该计时器将在“post”钩子中停止。缺少的一件事是每个请求的唯一标识符,我可以将其设置为'pre'钩子中的键,并使用此键在'post'钩子中标识请求。
出于某种原因,请求上似乎没有这样的标识符。
我试图使用$locals字段设置自己的标识符,但它未定义,因此无法工作。
有什么想法吗?

let count = 0;
UserSchema.pre(/.*/, async function () {
  this.$locals.requestId = count; // getting undefined error since locals doesn't exists

  console.log(`Pre - Request id: ${this.$locals.requestId}`);

  count += 1;
});

UserSchema.post(/.*/, function () {
  console.log(`Post - Request id: ${this.$locals.requestId}`);
});
2w2cym1i

2w2cym1i1#

尝试使用next参数:

let count = 0;
UserSchema.pre('save', function (next) {
  this.$locals.requestId = count;
  console.log(`Pre - Request id: ${this.$locals.requestId}`);
  count += 1;
  next();
})

相关问题