我怎样才能存储其他表单字段与passport-local.js

我正在做一个node + passport.jsauthentication。 我做了一个简单的login/注册应用程序。 它工作正常,但它只存储用户名和密码。

如何通过带login工作loginauthentication的signup.html页面将电话号码,电子邮件,兴趣爱好,性别等其他表单字段存储到数据库中? 任何人都可以有解决scheme,所以我可以存储在数据库中的所有字段….

//my schema is :-- var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = mongoose.Schema({ local : { username : String, gender : String, phone : String, email : String, password : String } }); userSchema.methods.generateHash = function(password) { return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); }; userSchema.methods.validPassword = function(password) { return bcrypt.compareSync(password, this.local.password); }; var User = mongoose.model('user', userSchema); module.exports = User; 

在这段代码中,我使用了email,用户名,密码,性别手机模式,并在signup.html页面中给出了字段。 但它只存储用户名和密码字段………

       

网上收集的解决方案 "我怎样才能存储其他表单字段与passport-local.js"

打开passport.js文件(gernally里面的configuration文件夹)

find这行代码。

  passport.use('local-signup', new LocalStrategy({ // 'login-signup' is optional here usernameField : 'email', passwordField : 'password', passReqToCallback : true },function(req, email, password, done) { var gender = req.body.gender; var username = req.body.username; var phone = req.body.phone; // Now you can access gender username and phone })); 

添加选项passReqToCallback ,您可以访问passReqToCallback所有请求主体数据:

 passport.use(new LocalStrategy({ passReqToCallback: true }, function (req, username, password, cb) { // Form fields are in req.body if using body-parser // ... });