Missverständnis der Middleware Mongoose

Azoulay Jason

Ich erstelle ein kleines soziales Netzwerk mit MongoDB, Express, NodeJS. Ich habe dieses Schema mit einer Middleware zum Verschlüsseln des Passworts.

const passwordValidators = [
    {
        validator: passwordLengthChecker,
        message: 'Password must be at least 5 characters but no more than 40'
    },
    {
        validator:validPassword,
        message: 'Must have at least one uppercase, lowercase, special character, and number'
    }
];


/* ========
Schema for user
========= */
const userSchema=new Schema({
    email: { type: String, required: true, unique: true, lowercase: true, validate: emailValidators},
    username: { type: String, required: true, unique: true, lowercase: true, validate: usernameValidators},
    password: { type: String, required: true,validate: passwordValidators},
    bio: { type:String,default:null},
    location: {type:String, default:null},
    gender: {type:String,default:null},
    birthday: { type:Date,default:null},
    img: { type:String, default:null}
});


// Middleware that encrypt password 
userSchema.pre('save',function(next){
    if(!this.isModified('password'))
    return next();

    bcrypt.hash(this.password, null, null, (err,hash)=>{
        if(err) return next(err);
        this.password=hash;
        next();
    });
});

Nun, ich weiß nicht, ob es damit zusammenhängt, aber jedes Mal, wenn ich save() in meinen Routen verwende, führt dies die passwordValidators aus. Ich habe die Mungo-Dokumentation gelesen, aber ich habe das Gefühl, dass ich nichts davon verstehe. Die Lösung, die ich vermutet habe, bestand darin, diese Middleware einfach zu überspringen, wenn es sich nicht um eine Registrierung handelt, aber ich weiß tatsächlich nicht, wie das geht.

Hier ist die Strecke

router.post('/edit-photo', upload,function (req,res){
      if (!req.file) {
        res.json({success:false,message:"raté"});
      }
      else{
        User.findOne({_id:req.decoded.userId},(err,user)=>{
            if(err){
                res.json({success:false,message:'Something went wrong: '+err});
            }
            else{
                if (!user) {
                    res.json({success:false,message:'User not found'});
                }
                else{
                    user.img="Bloggy/uploads/profile/profile-pic-"+user.username;
                    user.save((err)=>{ // i get this err
                        if(err){
                            res.json({success:false,message:'Something went wrong: '+err});
                        }
                    });
                    console.log('réussi');
                }
            }
        });
      }
    });
Azoulay Jason

Die Sache ist, dass Mongoose alle Validatoren ausführt, die Sie vor dem Speichern erstellen.

Validierung ist Middleware. Mongoose registriert die Validierung standardmäßig als pre('save')-Hook in jedem Schema.

In meinem Fall musste ich nur

user.save({ validateBeforeSave: false },(err)=>{
                        if(err){
                            res.json({success:false,message:'Something went wrong: '+err});
                        }
                        else{
                            res.json({success:true,message:"Update to databse"});
                        }
                    });

um die Validierung für diese Route zu überspringen

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Missverständnis der Datenbindung

Grundlegendes Missverständnis der Dateistruktur

Missverständnis der Haskell-Fmap-Komposition

Missverständnis der Verwendung von: = in Go

Missverständnis der virtuellen Methode in C ++

Java Singleton + Missverständnis der inneren Klasse

Missverständnis der DocumentDB-Datenstruktur

Missverständnis der Winkelmontage als Anfänger

Missverständnis der CGAL-Gewerkschaft

Missverständnis der Seedatenvisualisierung von Dichten?

Missverständnis der Kopierdatei in Docker-Bildern

Missverständnis der globalen Variablen in Python

Missverständnis mit der asBooleschen Methode der Matcher-Klasse

Missverständnis der Flussarchitektur in der Beispiel-Chat-App

Missverständnis der Spezifikation der Go-Sprache zur Gleitkommarundung

Missverständnis der Beschränkungen der Flutter-Version

Missverständnis der Angular2-Änderungserkennung - Mit Plunker

Linux: Missverständnis bei der Tee-Nutzung

c ++ Missverständnis der binomial koeffizienten rekursiven Funktion

Missverständnis der Phonegap-Plugin-Push-Version

PHP Bug oder mein Missverständnis der Sprache?

Missverständnis der Details zur asynchronen/ausstehenden Bewertung

einfaches Missverständnis bei der Verwendung von Platzhaltern

Missverständnis der Verwendung von filter_extreme in gensim

Missverständnis der Sjoin-Funktion mit Geopandas

Missverständnis des Prozesses der JWT-Authentifizierung

Missverständnis der C# SerialPort.Write() Methode

Missverständnis der Model-View-Projection-Matrix in OpenGL

Knoten js: Bluebird Promisify in der Mongoose Middleware

TOP Liste

heißlabel

Archiv