2013-10-14 6 views
1

J'ai ce schéma mangouste:Mongoose: ne peut pas mettre à jour en sauvegarde callback

var UrlSchema = new mongoose.Schema({ 
    description: String 
}); 

Ensuite, je crée un modèle istance:

var newUrl = new Url({ 
    "description": "test" 
}); 

newUrl.save(function (err, doc) { 

    if (err) console.log(err); 
    else{ 
     Url.update({_id: doc._id},{description: "a"}); 
    } 
}); 

Mais une mise à jour effectuée ... Pourquoi? Merci

+0

double possible de [mise à jour Mongoose sans rappel] (http://stackoverflow.com/questions/14613890/mongoose-update-without-callback) –

+0

Cela a bien fonctionné quand je l'ai essayé . – JohnnyHK

+0

@jibsales, votre modification a corrigé le code, rendant la question sans signification. =) –

Répondre

2

Vous devez ajouter un rappel à la méthode de mise à jour ou appeler #exec() pour effectuer la mise à jour:

var newUrl = new Url({ 
    "description": "test" 
}); 

newUrl.save(function (err, doc) { 

    if (err) console.log(err); 
    else{ 

    Url.update({_id: doc._id},{description: "a"}, function (err, numAffected) { 
     // numAffected should be 1 
    }); 

    // --OR-- 
    Url.update({_id: doc._id},{description: "a"}).exec(); 

    } 
}); 

Juste Pour votre information: je reste personnellement loin de update parce qu'il contourne par défaut, setters, middleware, validation , etc, qui est la principale raison d'utiliser un ODM comme Mangoose de toute façon. Je n'utilise que update pour traiter des données privées (aucune entrée utilisateur) et des valeurs d'incrémentation automatique. Je réécrire comme ceci:

var newUrl = new URL({ 
    "description": "test" 
}); 

newUrl.save(function(err, doc, numAffected) { 
    if (err) console.log(err); 
    else { 
    doc.set('description', 'a'); 
    doc.save(); 
    } 
}); 
+0

En fait, selon [les docs] (http://mongoosejs.com/docs/api.html#model_Model-save), le 'save 'callback prend _three_ arguments: err, doc, numberAffected. – JohnnyHK

+0

Wow, j'utilise mongo depuis 1.x et je n'ai jamais attrapé ça ... RTFM je suppose. Mise à jour de la publication ... – srquinn

Questions connexes