// 회원가입 파트 //'id'라는 전략을 만들어서 사용
passport.use('id', new LocalStrategy({
usernameField: 'id',
passwordField: 'pw',
passReqToCallback: true,
}, function (req, sumit_id, sumit_pw, done) {
var userName = req.body.name;
console.log(가입자 정보 id:${sumit_id}, pw:${sumit_pw}, name:${userName}
)
process.nextTick(function () {
db.collection('login').findOne({ id: sumit_id }, function (error, result) {
if (error) return error
if (!result) { // 아이디가 없으면 가입 진행
db.collection('login').insertOne({ id: sumit_id, pw: sumit_pw, name: userName }, function (error, res) {
if (error) return error;
console.log('가입정보 입력')
db.collection('login').findOne({ id: sumit_id }, function (error, user) {
console.log(user)
return done(null, user)
})
});
} else { // 아이디가 있으면 가입 X
console.log("이미 있는 사용자")
return done(null, false, { message: '이미 존재하는 사용자입니다.' })
}
}) //end findOne
}) //end nextTick
})); //end strategy
회원가입 기능 만드는 와중에 굵은 글씨로 되있는 부분보면 insertOne을 이용해서 데이터 베이스에 넣었는데 콜백함수에서 result가 이상한 값이 들어가서 다시 찾아서 세션으로 보내주는 방식을 사용했는데 다른 방식이 있을까요?