Mise à jour d'un objet imbriqué dans mongoose
J'ai cherché de nombreuses questions sur les objets imbriqués, mais tout ce que je trouve où liée à la matrice[s].
Je suis à la recherche d'une mise à jour simple objet imbriqué dans mangouste.
À partir d'ici http://mongoosejs.com/docs/guide.html
there is an example schema :
var blogSchema = new Schema({
title: String,
author: String,
body: String,
comments: [{ body: String, date: Date }],
date: { type: Date, default: Date.now },
hidden: Boolean,
meta: {
votes: Number,
favs: Number
}
});
Une fois créé un document,
Comment puis-je changer la favs numéro plus tard?
Il n'existe pas de document de la même que j'ai pu trouver.
C'est ce que j'ai fait:
blog.findById(entityId, function(err, mainDoc){
if(err || !mainDoc) return next(err || 'Document not found');
var subDoc = mainDoc['meta'];
if(subDoc){
subDoc = _.extend(subDoc, { favs : 56 }); //_ lib already available
console.log(mainDoc.get('meta')); //Prints the updated result with favs = 56 OK
mainDoc.save(function(err, doc){
console.log(doc.get('meta')); //prints the updated results with favs = 56 OK
});
} else next('Not found');
});
Tout fonctionne fichier et de la console donne le résultat souhaité.
Mais lorsque je passe à la mangouste console de requête et le document, je ne l'obtiens pas le résultat mis à jour.
Je sais qu'il peut y avoir d'autres façons d'atteindre le même, mais je suis seulement à la recherche de ce que je fais de mal dans ce code.
Pourquoi la console, après l'enregistrement du document, donne inégalée des données à partir de la base de données?
Lors de l'activation de la mangouste option debug, j'ai trouvé dans la requête il n'y a pas de telles données soient mises à jour. Requête feux avec vide $. { $set : {} }
source d'informationauteur codeofnode
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez simplement modifier la valeur de
favs
vous pouvez utiliser une requête plus simple:Le problème est que vous ne pouvez pas faire n'importe quoi avec les données de la mangouste une fois que vous avez d'autre que de l'envoyer au client.
CEPENDANT, il est la méthode lean qui fait de sorte que vous pouvez ensuite mettre à jour l'info et de faire ce que vous voulez avec elle.
Qui ressemblerait à ceci: