Lorsque vous utilisez ce user.meta.logins.$inc();
je reçois cette erreur de la console:MongooseJS ne peut pas mettre à jour la valeur numérique
Mongoose MongooseNumber#$inc/MongooseNumber#increment is deprecated. Use Model.update() to get incrementation in v3 instead.
Ce que je beed faire est ce (le code est dépouillé à l'utilisation de base):
userSchema.methods = {
userFind : function (user, pass, callback) {
this.model('user').findOne({ 'username':user, 'password':pass }, callback);
}
}
var userModel = new model();
userModel.userFind(username, password, function(err, user) {
user.meta.logins.$inc();
user.meta.last_action = new Date();
user.save();
});
Cela fonctionne très bien, mais puisque la dépréciation est à portée de main, je veux utiliser la méthode Model.update()
proposée pour mettre à jour l'utilisateur, mais je ne peux pas y arriver.
J'ai essayé de faire userModel.update()
et user.update()
mais dans les deux cas j'ai des erreurs. Peut-être que ma syntaxe est fausse pour la mise à jour.
Toutes les idées seraient grandement appréciées.
que je l'ai déjà essayé, je vous remercie. Il génère cette erreur: 'Object {} n'a pas de méthode 'update'' – Evenflow
Je supposais que' userModel' est votre classe Model pour les utilisateurs, mais cette ligne m'a confondu: 'var userModel = new model();' Vous devriez appeler 'update' sur l'objet retourné d'un appel comme' mongoose.model ('user', userSchema); 'où vous enregistrez le schéma. – JohnnyHK
Oui, c'est ce que je fais, la ligne 'var userModel = new model();' est juste un wrapper qui retourne un modèle et une connexion. Comme vous pouvez le voir, j'appelle une méthode pour le schéma ('userModel.userFind') et cela fonctionne très bien, donc mon wrapper retourne le modèle et la connexion va très bien. – Evenflow