首页 > 解决方案 > Mongoose findOneAndUpdate:如何仅在更新的字段而不是所有字段上运行验证器?

问题描述

这不是Mongoose findOneAndUpdate 和 runValidators 不工作
runValidators 选项不工作 findByIDAndUpdate 或 findOneAndUpdate 使用 mongoose 的副本

我正在为 Node.js 使用 Mongoose ODM
当我使用最后一行的选项运行以下代码时,{ runValidators: true }我收到一个错误,因为它也在尝试验证电子邮件地址(更新中未提供)。如果我删除{ run Validators: true },那么代码运行良好,但是没有对我更新的字段进行验证。如何让 Mongoose​​对我提供更新的字段而不是数据库条目中的所有字段运行验证?

const mongoose = require("mongoose")

const User = mongoose.model("User", {
    name: {
        type:    String
    },
    email: {
        type:  String
    }
}

const update = {
    name:  "Jessica"
}

User.findByIdAndUpdate(id, update, { new: true, runValidators: true })

设置时给出的错误{ runValidators: true }是:TypeError: Cannot read property '_update' of undefined

标签: node.jsmongoose

解决方案


推荐阅读