javascript - Mongoose - 从 'pre' 保存 Hook 中的虚拟节点访问数据

标签 javascript mongodb express mongoose

我需要使用新创建的文档中的数据,并使用该数据通过“pre” Hook 更新值。

例如,我的模型是:

...
title: {
  type: String,
  required: true
},
company: {
  type: mongoose.Schema.ObjectId,
  ref: 'Company',
  required: true
}

...

“pre” Hook 是:

jobSchema.pre('save', function(next) {
  const jobTitle = slugify(this.title, { lower: true })
  const companyName = slugify(this.company.name, { lower: true })
  this.slug = jobTitle + companyName
  next()
})

我无法在钩子(Hook)中访问 this.company,并且我不确定如何做到这一点。

最佳答案

由于company是ObjectId类型,因此您可以使用findById来访问

jobSchema.pre('save', function(next) {
    let job = this;
    Company.findById(job.company, function (err, company) {
        if(err) return next(err);
        const jobTitle = slugify(job.title, { lower: true })
        const companyName = slugify(company.name, { lower: true })
        job.slug = jobTitle + companyName
        next();
    });
});

关于javascript - Mongoose - 从 'pre' 保存 Hook 中的虚拟节点访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60882100/

相关文章:

mongodb - 如何在 Mongoose 中获取 NumberLong 记录

node.js - Passport js本地策略自定义回调 "Missing credentials"

javascript - 如何针对我的案例使用 Express Error 中间件?

javascript - 如何使用 jQuery/Ajax 更改基于变量的成功函数的输出?

javascript - 通过 AJAX 加载的 ColdFusion CFC 返回空响应

linux - 从损坏的 MongoDB 安装中恢复 WiredTiger 集合时出错

c# - 为什么 MongoDB 中的多个 session 比一个 session 更快?

node.js - 如何解码使用 x-www-form-urlencoded 编码的 Javascript 对象数组?

javascript - knockout 控制台日志和可观察的未定义

javascript - Leaflet CRS.Simple on Chrome Android 分辨率低缩放