首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >节点js和mongo、pre、后置挂钩中间件不在findByIdAndUpdate上执行。

节点js和mongo、pre、后置挂钩中间件不在findByIdAndUpdate上执行。
EN

Stack Overflow用户
提问于 2019-12-04 08:38:14
回答 1查看 137关注 0票数 0

我有一个名为vehicle的模式,可以在其中添加来自管理员的数据,也可以添加导入csv文件的数据。顺便说一下,我用的是keystone js。

现在,当我从admin添加数据时,钩子就会被触发和命中,但是当我从导入的csv文件代码中添加数据时,尽管数据被添加到数据库中,钩子还是不会被命中和触发。

我们可以使用Vehicle.model.findOneAndUpdat触发预保存钩子吗?

我的导入csv代码片段

代码语言:javascript
代码运行次数:0
运行
复制
exports.import = function (req, res) {

    let file = fs.createReadStream(req.files.file.path)


    Papa.parse(file, {
        header: true,
        worker: true,
        preview: prev_val,

        complete: function (results) {

            let vehicles = _.each(results.data, function (value, key) {


                let condition = { VIN: value.VIN }

                Vehicle.model.findOneAndUpdate(condition, value, { upsert: true, new: true }, function (err, doc) {



                    }

管理用户界面

当我从这里添加数据时,钩子就会被触发。

钩子

代码语言:javascript
代码运行次数:0
运行
复制
  schema.pre('save', function (next) {
    console.log("HIT" , hit)
    if (this.isNew) {
      next()
    } else {
      console.log("this._original" , this._original)
      console.log("this._original1" , this)
      this._diff = getDiff(this, this._original)
      next()
    }
  })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 10:17:06

来自官方文档

此函数触发以下中间件。findOneAndUpdate()

因此,它不会触发pre('save')中间件。相反,您应该使用pre('findOneAndUpdate')中间件。相关官方医生这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59171926

复制
相关文章

相似问题

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