2016-10-04 2 views
0

: Ich bin in MongoDB/Mongoose und habe folgendes Problem:MongoDB/Mongoose: ein Feld wird nicht durch leere Zeichenfolge aktualisiert

mein Schema mit verschachtelt ist:

profile: { 
school: {type: String, required: false}, 
subject: {type: String, required: false}, 
graduation: {type: String, required: false} 
} 

jetzt will ich aktualisieren Schule, Thema und abschluss mit:

userRouter.put('/:id', function(req, res, next){ 

    var updateObject = req.body; 

User.findByIdAndUpdate(req.params['id'], updateObject,{upsert: true}, (err, success)=> { 
if(err) 
    res.status(404).send(err); 
    res.status(200).send(); 
    }); 
}); 

weiß, dass ich die Put-Methode das Objekt ersetzen, aber die Patch-Methode in meinem Code nicht ausgeführt wird. Nun, wenn ich gesendet:

{"school": "", "subject": "c", "graduation": ""} 

Subjekt und Graduierung wird überschrieben, aber die Schule nicht leer sein - es enthält die alten Sachen.

Haben Sie eine Lösung? Vielen Dank.

Antwort

0

wie diese Schule und Abschluss Getestet wurden geändert ...

let updateObject = { 
     profile: {school: "", subject: "c", graduation: ""} 
    }; 

    user.findByIdAndUpdate(
     req.params['id'], 
     updateObject, 
     {upsert: true}, 
     function(err, success) { 
      if (err) 
       res.status(404).send(err); 
      res.status(200).send(); 
     } 
    ); 

dieses Testschema verwendet:

new mongoose.Schema({ 
    created: {type: Date, required: true, default: Date.now}, 
    modified: {type: Date, required: true, default: Date.now}, 
    profile: { 
     school: {type: String, required: false}, 
     subject: {type: String, required: false}, 
     graduation: {type: String, required: false} 
    } 

}, 
{ 
    collection: 'db_test', 
    strict: 'throw', 
    toJSON: {getters: true}, 
    toObject: {getters: true} 
} 
); 
Verwandte Themen