首页 > 解决方案 > 如何在 Mongoose 的“pre findOneAndUpdate”范围内取消设置字段?

问题描述

我正在尝试取消设置“pre findOneAndUpdate”范围内的“文本”字段。我过去使用的这 3 种不同的方法都行不通。如何删除此范围内的某些字段?

const UserSchema: SmartSchema = new SmartSchema({
    id: Schema.Types.ObjectId,
    userId: { type: Number, required: true },
    text: String
});

UserSchema.pre('findOneAndUpdate', function(next: HookNextFunction) {
    let query: Query = this as Query;

    query
     .update( 
       {},
       { 'text': undefined }, 
       { strict: false } 
     )
     .exec()

    // OR

    query
      .update( 
         {},
         { $unset: { 'text': undefined } }, 
         { strict: false } 
     )
     .exec()

    // OR

    delete query._update.text;

    next();
});

标签: node.jsexpressmongoose

解决方案


推荐阅读