Sequelize - findOne().success() n'est pas défini
Je suis la passport.js doc afin de créer un LocalStrategy à l'aide de Sequelize comme ORM pour ma base de données postgres. Toutefois, au cours de l'authentification, de faire User.findOne(...).success(function(user){...]});
dans mon login.js module retourne undefined
. Ce que je fais mal?
user.js:
var pg = require('pg');
var Sequelize = require('sequelize');
var sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
port: 5432,
dialect: 'postgres'
});
var User = sequelize.define('users', {
username: Sequelize.STRING,
password: Sequelize.STRING
});
User.sync();
module.exports = User;
mon login.js (routeur)
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done){
console.log(id)
User.findById(id, function(err, user){
done(err, user);
});
});
passport.use(new LocalStrategy(
function(username, password, done){
var User = require('../models/user');
User.find({where:{username: username, password: password}}).success(function(user){
if(!user) {
return done(null, false, {message: 'Nom d\'usager incorrect.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Mot de passe incorrect.' });
}
return done(null, user);
});
}
));
router.post('/login', passport.authenticate('local', { successRedirect: '/decoupage',
failureRedirect: '/login',
failureFlash: true })
);
module.exports = router;
Vous devez accepter les @robertklep réponse qui est correcte.
OriginalL'auteur Below the Radar | 2015-08-25
Vous devez vous connecter pour publier un commentaire.
Sequelize utilise une version modifiée de la
bluebird
promesse de la bibliothèque, qui n'ont pas de.success()
fonction.Au lieu de cela, utiliser
.then()
(qui suit également le Promesses/A+ standard):Les versions actuelles de
sequelize
utiliser la version stock debluebird
. Pour détecter les erreurs d'utilisation.catch
ou.error
. La Documentation peut être trouvé ici.OriginalL'auteur robertklep