2017-05-14 3 views
0

Ich mag dieser Folge question aber ich es immer noch nicht herausfinden, wie zu lösen, heißt es instanceMethods Option zu verwenden, um die Methoden zu verwenden, in dem Modell genau das ist, was ich tat:nicht mit einem Passwort verschlüsselt registrieren Kann

"use strict"; 
var sequelize = require('./index'); 
var bcrypt = require('bcrypt-nodejs'); 

module.exports = function (sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
    username: DataTypes.STRING, 
    email: DataTypes.STRING, 
    password: DataTypes.STRING 
    }, { 
     instanceMethods: { 
     generateHash: function (password) { 
      console.log("hi"); 
      return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); 
     }, 
     validPassword: function (password) { 
      return bcrypt.compareSync(password, this.password); 
     } 
     }, 


    }); 



    return User; 
} 

nachdem ich verwende, dass ich es zu testen versuchte, einen Passwort-Hash auf meinem Register Route wie folgt zu erzeugen:

var express = require('express'); 
var User = require('../../models').User; 
var router = express.Router(); 

/* GET users listing. */ 
router.post('/', function (req, res, next) { 

    if (JSON.stringify(req.body) == "{}") { 
    return res.status(400).json({ Error: "Register request body is empty" }); 
    } 
    if (!req.body.email || !req.body.username || !req.body.password) { 
    return res.status(400).json({ Error: "Missing fields for registration" }); 
    } 



    var password = User.instaceMethods.generateHash(req.body.password); 

    User.create({ 
    username: req.body.username, 
    email: req.body.email, 
    password: password 
    }).then(function() { 
    return res.status(200).json({message: "user created"}); 
    }) 

}); 

module.exports = router; 

mit diesem, wenn ich zu meinem/registrieren gehen, bekomme ich keine Antwort auch eine console.log im passwort zeigt mir nichts an ich habe versucht zu sehen, ob es in den generethash b eintritt ut, es geht nicht in die Methode, was läuft hier falsch?

+0

ich tat, nicht funktioniert entweder :(, ich bekomme kein Ergebnis –

Antwort

1

Fügen Sie Ihre generateHash als Klassenmethode Ihres Modells hinzu, keine Instanzmethode.

var User = sequelize.define('user', { 
    .... 
}, { 
    classMethods: { 
    generateHash: function() { 
     ... 
    } 
}) 

Da Sie eine Instanz noch nicht haben, nicht vor User.create().

Dann können Sie es User.generateHash()

mit rufen Und auch Sie sollten fangen (und wahrscheinlich mindestens log) sequelize Ausnahmen. In

.catch(function(err){ 
    console.log(err) 
}) 

nach dem then()

+0

Sie ehrfürchtigen Freund sind danke –

+0

kann ich fragen Sie etwas anderes wirklich schnell? –

+0

thnx. eine andere frage? nicht sicher, ob ai kann helfen, nicht wirklich soo mit sequelize und knoten selbst erfahren –

Verwandte Themen