[英]newUser.somefunction is not a a function [Mongoose]
I have made a simple signup and added a function to the database and when I try to use it I get this error - TypeError: newUser.generateHash is not a function
. 我进行了简单的注册,并向数据库中添加了一个函数,当我尝试使用它时,出现此错误TypeError: newUser.generateHash is not a function
。 I'm new to passport and I figured to only use passport for login. 我是新来的护照,所以我只想使用护照进行登录。 I've disabled the routes to make the problem short. 我禁用了使问题简短的路线。
user.js user.js
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var userSchema = mongoose.Schema({
username: String,
password: String
});
var pollsSchema = mongoose.Schema({
pollTitle: String,
option1: String,
option2: String,
option3: String,
option4: String
})
userSchema.methods.generateHash = function generateHash(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
}
userSchema.methods.validPassword = function validPassword (password) {
return bcrypt.compareSync(password, this.password);
}
module.exports = mongoose.model('User', userSchema);
module.exports = mongoose.model('polls', pollsSchema);
server.js server.js
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser')
var mongoose = require('mongoose');
var session = require('express-session')
var passport = require('passport');
var LocalStrategy = require('passport-local');
var flash = require('connect-flash');
var bcrypt = require('bcrypt-nodejs');
var User = require('./models/user');
var app = express();
//Connection to Database
mongoose.connect('mongodb://localhost/polls');
//Post for enviorement
var port = process.env.PORT || 9000;
//Using middleware
app.use(session({
secret: 'secretstuff',
resave: true,
saveUninitialized: true
}));
app.use(express.static(path.join(__dirname, '/tmp')));
app.use(express.static(path.join(__dirname, '/bower_components')));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
//require('./config/passport')(passport);
//configuration of app
app.set('view engine', 'jade');
app.set('views', path.join(__dirname, 'views'));
//Routes
//require('./routes/dynamic.js')(app, passport);
app.get('/', function(req, res) {
res.render('index');
});
app.post('/signup', function(req, res) {
console.log('sdsss');
var pattUser = /^[a-z\S]{6,12}$/;
var pattPass = /^[a-z\S]{8,14}$/;
var username = req.body.username;
var pass = req.body.password;
var confirmpass = req.body.confirmpass;
if(pattUser.test(username) === true && pattPass.test(pass) === true && pass === confirmpass) {
console.log('ddddd-server');
User.findOne({username: username}, function(err, user) {
if(err) { return err; }
if(user) {
res.jsonp({message: 'username already taken'});
} else {
var newUser = new User();
console.log(newUser.generateHash(pass));
newUser.username = username;
newUser.password = newUser.generateHash(pass);
newUser.save(function(err) {
if(err) { return err; }
})
res.jsonp({message: 'You can now Log In!'});
}
})
}
});
app.listen(port, function() {
console.log('Our app is running on http://localhost:' + port);
});
You cannon use 'module.exports = ' more then one time. 您可以使用'module.exports ='超过一次。 The second statement overwrites the first one. 第二条语句覆盖第一条。 If you want to export two different schemas do that: 如果要导出两个不同的模式,请执行以下操作:
module.exports.User = mongoose.model('User', userSchema);
module.exports.Polls= mongoose.model('polls', pollsSchema);
And then on you server.js
然后在您的server.js
var schemas = require('./models/user');
var User = schemas.User;
var polls = schemas.Polls;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.