【发布时间】:2021-06-21 01:38:41
【问题描述】:
我有这个架构:
const collaboratoreschema =new schema({
//_id:schema.Types.ObjectId,
dataregistrazione:{type:Date,default:Date.now,immutable:true},
nominativo:nominativoschema,
localitanascita:{type:String,required:true,trim:true},
provincianascita:{type:String,required:true,trim:true},
datanascita:{type:Date,required:true},
indirizzoresidenza:{type:indirizzoEmbeddedSchema,required:true},
indirizzodomicilio:{type:indirizzoEmbeddedSchema},
telefoni:{type:[telefonoschema],required:true},
indirizziemail:{type:[require('../email.schema.js')],default:undefined},
codicefiscale:{type:String,required:true,uppercase:true,trim:true,match:/^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/},
note:{type:String,trim:true},
immagine:{type:imageEmbeddedSchema,set:v=>!v || Object.keys(v).length===0?undefined:v},
documenti:{type:[{type:schema.Types.ObjectId,ref:'tbFiles'}],set:v=>!v || Object.keys(v).length===0?undefined:v},
datainiziorapporto:{type:Date,required:true},
datafinerapporto:Date,
riferimentoazienda:{type:schema.Types.ObjectId,ref:'tbFornitori',set:v=>!v || v==={} || v===''?undefined:v},
attivo:{type:Boolean,default:true},
},{timestamps:true,useNestedStrict: true, omitUndefined:true,collection:'tbCollaboratori'})
保存工作正常,但更新时出现问题。例如,将注释字段值设置为空,当我使用 await collaboratore.findByIdAndUpdate({_id:id},employ,{new:true,upsert:true}); 保存更改时,不保存更改,而如果我将值更改为非空值,它工作正常。 我希望删除空字段和未定义字段。
更新
这是我的更新控制器:
let employ=new collaboratore(); // collaboratore is my model
collaboratoreschema.eachPath(d=>{
employ[d]=c[d]; //c is collaboratore from req.body
})
await collaboratore.findByIdAndUpdate({_id:id},employ,{new:true,upsert:true});
谢谢
【问题讨论】: