passport.use('local.signup', new Localstrategy({
usernameField: 'email',
passwordField: 'password',
roleField: 'role',
passReqToCallback: true
}, function(req, email, password, role, done) {
req.checkBody('email', 'Invalid Email').notEmpty().isEmail();
req.checkBody('password', 'Invalid Password ').notEmpty().isLength({min:4});
req.checkBody('role', 'Invalid Password').notEmpty();
var errors = req.validationErrors();
if (errors) {
var messages = [];
errors.forEach(function(error) {
messages.push(error.msg);
});
return done(null, false, req.flash('error', messages));
}
// what the...
User.findOne({
'email': email
}, function(err, user) {
if (err) {
return done(err);
}
if (user) {
return done(null, false, {
message: 'Email is already in use.'
});
}
var newUser = new User();
newUser.email = email;
newUser.password = newUser.encryptPassword(password);
newUser.role = role;
newUser.save(function(err, result) {
if (err) {
return done(err);
}
return done(null, newUser);
});
});
}));
Antwort
Ich glaube nicht, diese Einstellung alles tun wird:
roleField: 'role',
Sie den Fehler, indem Sie Ihre Funktionsargumente aus diesem Problem beheben:
function(req, email, password, role, done) {
zu diesem:
function(req, email, password, done) {
events.js: 163 werfen er; // Nicht behandelte 'Fehler' Ereignis ^ Typeerror: done ist keine Funktion bei /Users/ZL/Desktop/nodeJs/debble/passport_config/passport.js:54:20 bei/Users/ZL/Desktop/NodeJS /debble/node_modules/mongoose/lib/model.js:3932:16 –
Ursache mein Schema des Benutzers hat die Rolle, also vielleicht ist die Rolle notwendig, ich bin verwirrt, warum 'getan ist keine Funktion' ist es über Versprechen ? hoffe, du kannst mir helfen, ich kämpfe fast einen Tag –
@conleywang Es hat nichts mit Versprechungen zu tun. Die Funktion wird 4 Argumente übergeben und das vierte Argument ist der 'Fertig'-Callback. Wenn Sie ein 'role' Argument hinzufügen, verschieben Sie' done' auf den 5. Platz, der nicht existiert. Argumente werden nach Position und nicht nach Name bestimmt. Wenn Sie zusätzliche Informationen benötigen, z. B. eine Rolle, müssen Sie sie selbst aus dem 'req'-Objekt abrufen. – skirtle
- 1. Getting TypeError: $ .ajax (...). Done ist keine Funktion [Ajax, Jquery]
- 2. Pass ist werfen user.authenticate ist keine Funktion
- 3. TypeError: req.flash ist keine Funktion
- 4. TypeError: user.comparePassword ist keine Funktion
- 5. Typeerror: By.cssSelector ist keine Funktion
- 6. sailsjs services: done keine Funktion
- 7. TypeError: driver.isElementPresent ist keine Funktion
- 8. TypeError: $ .ajax ist keine Funktion
- 9. typeError: Login ist keine Funktion
- 10. TypeError: accountService.getMedia ist keine Funktion
- 11. TypeError ist keine Funktion
- 12. ... Typeerror ist keine Funktion
- 13. TypeError: Antwort ist keine Funktion
- 14. Express/Pass - pass.authenticate ist keine Funktion
- 15. Typeerror: collection.some ist keine Funktion
- 16. Typeerror: $ ist keine Funktion in jQuery Funktion
- 17. TypeError: $ .useref.assets ist keine Funktion
- 18. Pass Benutzer ist keine Funktion
- 19. Typeerror: Einefunktion ist keine Funktion (mit Mongoose)
- 20. chai mocha TypeError: undefined ist keine Funktion
- 21. Typeerror: (Zwischenwert) .apply keine Funktion ist
- 22. webpack child_process.exec - TypeError: Fehler ist keine Funktion
- 23. Uncaught TypeError: $ (...). Anotherfunc ist keine Funktion
- 24. TypeError: Undefined ist keine Funktion - Sails.js
- 25. AngularJS Typeerror ist keine Funktion
- 26. TypeError: res.links.join ist keine Funktion
- 27. Typeerror: require (...) ist keine Funktion
- 28. Typeerror: $ (...) .tooltip keine Funktion ist
- 29. Typeerror: ReactHotAPI ist keine Funktion
- 30. TypeError: io.connect ist keine Funktion
Sind diese Zeilenumbrüche in Strings Teil von deinem ursprünglichen Code? – Xufox