ログインしたら、ユーザーごとに異なる基本的なユーザープロファイルを作成したいと思います。これが機能しない理由を理解するためのアドバイス/ヘルプを探しています。私はnodejsとmongodbを使用しています。現在、ユーザーがログインした後、次のようにセッションを保存しています(私はそうだと思います):
var Session = require('connect-mongo')(connect);
app.use(express.session({
secret: 'settings.cookie_secret',
store: new Session({
url: 'mongodb://localhost/test5',
maxAge: 300000
})
}));
このステップが間違っている場合は、説明してください
それから私はここに私の翡翠ファイルを手に入れました:
extends layout
block content
div.centerContent
- if (locals.user)
p Welcome #{user.email}
- else
p Welcome
私のルートファイル
var User = require('../models/user.js');
var passport = require('passport');
exports.register = function(req, res) {
res.render('register', {title: 'Weblio'});
};
exports.registerThanks = function(req, res) {
res.render('registerThanks', {title: 'Weblio'});
};
exports.registerError = function(req, res) {
res.render('registerError', {title: 'Weblio'});
};
exports.registerPost = function(req, res, next) {
console.log("here 1");
if(req.body && req.body.email && req.body.password === req.body.cpassword) {
var newUser = new User ({
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: req.body.password,
phone: req.body.phone,
birthday: new Date(req.body.birthday)
});
newUser.save(function(err){
console.log("here 3");
if(!err) {
console.log("here3a");
res.redirect('registerThanks');
} else {
{email: {$exists: true}};
console.log("here 4");
res.redirect('registerError');
/*} else {
console.log(email);
console.log('email exists');
res.redirect('registerError');
next(err);
}; */
//removed next(err); from above else and now it does not show dup key error
}
});
} else {
console.log("here 1a");
next(new Error('Incorrect POST'));
res.redirect('registerError');
}
};
exports.login = function(req, res) {
res.render('login', {user: req.user, title: 'Weblio'});
};
exports.loginPost = function(req, res, next) {
console.log("here 1");
passport.authenticate('local', function(err, user, info) {
console.log("here 2");
if (err) { return next(err) }
if (!user) { return res.redirect('loginError'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('userProfile');
});
})(req, res, next);
};
exports.loginError = function (req, res) {
res.render('loginError', {title: 'Weblio'});
};
exports.userProfile = function(req, res) {
res.render('userProfile', {title: 'Weblio'});
};
オブジェクトが未定義であるというエラーが表示されます-データベースからオブジェクトにアクセスするにはどうすればよいですか。ユーザーがログインしている限り、このページを表示できます。
ありがとう!