2017-05-20 9 views
0

Ich versuche Postbote zu verwenden, um Daten zu senden und meinen Benutzer zu erstellen. aber ich bekomme immer einen Fehler, also habe ich einen Code auskommentiert, der wirklich nicht benötigt wird und jetzt bekomme ich diesen Fehler. Weiß jemand, was ich falsch machen könnte?Mongodb Benutzer Schema Fehler

Problem with mongo

Bottom of user code

MongoDB angeschlossen ist und der Server läuft auf Port 3000.

+1

Der Fehler erscheint über eine Variable nicht definiert zu beschweren ist Um Zeile 63 in user.js. Haben Sie darüber nachgedacht, mithilfe von console.log jede Variable an diesem Punkt auszugeben, um zu sehen, was jede Variable enthält? – Joe

Antwort

1

Wie @Joe und @robertklep bereits erwähnt Sie in Zeile Ihre Fehler haben 63:

bcrypt.hash (newUser.password, Salz, (err, hash => {

weil variable Kennwort ist undefined. Versuchen Sie, es manuell zu definieren, und stellen Sie sicher, dass Code, was Sie geschrieben haben, ordnungsgemäß ausgeführt wurde

Aber ich empfehle Ihnen dringend, genau zu sehen at virtual field (in mongoose) und verwenden Sie es für die Generierung von Salz-Passwörter.

In Ihrem Fall könnten Sie den gleichen Job mit diesem Code-Snippet mit Mungo und Bcrypt tun.

// zunächst einmal umbenennen "Passwort" auf "clean_password" in Ihrem Schema

user.virtual('clean_password') 
    .set(function(clean_password) { 
     this._password = clean_password; 
     this.password = this.encryptPassword(clean_password); 
    }) 
    .get(function() { 
     return this._password; 
    }); 

user.methods = { 

    /** 
    * Authenticate - check if the passwords are the same 
    * 
    * @param {String} plainText 
    */ 
    authenticate: function(plainPassword) { 
     return bcrypt.compareSync(plainPassword, this.password); 
    }, 

    /** 
    * Encrypt password 
    * 
    * @param {String} password 
    */ 
    encryptPassword: function(password) { 
     if (!password) 
      return ''; 

     return bcrypt.hashSync(password, 10); 
    } 
}; 

und überprüfen Sie es über:

var user = { 
    username: "whateveryouwant", 
    clean_password: "whateveryouneed" 
} 

User.create(user, function(err,doc){}); 
1

Die Fehlerzustände, die Sie ein ungültiges Argument bcrypt.hash() vorbei sind, nämlich undefined anstelle eines Passworts . Überprüfen Sie, ob req.body.password definiert ist.

1

Stellen Sie sicher, dass Sie eine console.log (newUser) erstellen, bevor Sie das newUser.password in der addUser-Funktion abfangen. Das Objekt kommt nicht so, wie Sie es erwarten, nachdem ein neues Benutzerschema mit Daten eingeleitet wurde. Oder geben Sie einfach einen eigenen String, um einen Salzpass zu machen, und prüfen Sie, ob er richtig funktioniert.