mangouste Modèle.mise à jour() - mettre à jour uniquement les valeurs fournies
J'ai le schéma suivant:
const wordSchema = mongoose.Schema({
author: {type: String, index: true, default: 'unknown'},
quote: String,
source: {type: String, default: 'unknown', index: true},
rating: {type: Number, default: 0},
createdAt: {type: Date, default: Date.now},
updatedAt: {type: Date, default: Date.now},
});
Et la suite de METTRE de l'itinéraire dans mon express app:
//Route to update a quote in the DB
app.put('/words/:id', function(req, res) {
const quote = new Word({
_id: req.params.id,
author: req.body.author,
quote: req.body.quote,
source: req.body.source,
rating: req.body.rating,
updatedAt: Date.now(),
});
Word.update(quote, function(err, raw) {
if (err) {
res.send(err);
}
res.send(raw);
});
});
Maintenant, quand j'envoie la requête PUT, si l'ensemble de paramètres avec une valeur par défaut ne sont pas fournis, ils seront remplies avec les valeurs par défaut à partir du Schéma. Comment puis-je mettre à jour uniquement les valeurs fournies?
Merci pour l'aide.
Vous devez vous connecter pour publier un commentaire.
Ne pas créer un nouveau
Word
exemple pour la mise à jour,update
prend des conditions et doc objet de paramètres qui permettent d'identifier séparément le document de mise à jour et de fournir à ses valeurs mises à jour:Vous pouvez essayer d'utiliser le
Modèle.findByIdAndUpdate()
méthode où tout le haut niveau de mise à jour des clés qui ne sont pas atomiques, les noms d'opérations sont traitées comme des opérations sur les ensembles et les valeurs par défaut/setters ne sont jamais exécutées. Vous pouvez utiliser lodash de_.assign()
méthode pour définir leupdatedAt
champ: