4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2022년 12월 1일 23:58 #56455
junsai참가자router에서 passport사용하는법 router 에서 login.js를 만들어서 로그인 기능만을 관리 하고 싶어서 이것저것 알아봤습니다. router에서 mongoDB를 사용하기 위해서 req.app.db 를 사용하면 된다는것은 알았는데, passport에서는 req가 없어서 어떻게 db를 사용해야 할지 모르겠습니다. //server.js MongoClient.connect(mongoDbUrl, function (err, client) { if (err) return console.log(err) db = client.db('nodejs-work-request') app.db = db console.log('connected') }) // login.js var router = require('express').Router(); function is_login(req, res, next) { if (req.user) { next() } else { res.render('login.ejs') } }
passport.use(new LocalStrategy({ usernameField: 'id', passwordField: 'pw', session: true, passReqToCallback: false, }, function (input_id, input_pw, done) { //여기에 req.app.db.coll... 를 사용할수 없음 db.collection('accounts').findOne({ 'id': input_id }, (err, result) => { console.log(result)
login_data = result if (err) return done(err) if (!login_data) return done(null, false, { message: 'account does not exist' }) if (input_pw == login_data.pw) { return done(null, login_data) } else { return done(null, false, { message: 'wrong password' }) } }) }));
passport.serializeUser(function (user, done) { done(null, user.id) });
passport.deserializeUser(function (user_id_saved, done) { //여기에 req.app.db.coll... 를 사용할수 없음
db.collection('accounts').findOne({ 'id': user_id_saved }, (err, result) => { done(null, result) }) });
module.exports = router; mysql 로 할때는 server.js 에서 export db로 routes에서 db를 쉽게 이용했는데, mongodb는 db를 routes에서 사용하기가 좀 어렵네요
2022년 12월 2일 09:58 #56484
codingapple키 마스터https://bluexmas.tistory.com/922 이런식으로 함수 파라미터로 db같은것도 전달해주면 그 파일에서도 db변수 사용가능할듯요
2022년 12월 2일 20:42 #56561
junsai참가자감사합니다 선생님. 대충 이런식으로 해결했습니다. 다른사람들을 위해 정보 공유하겠습니다. //server.js
module.exports.connect = function connect(callback){ MongoClient.connect(mongoDbUrl, function (err, client) { if (err) return console.log(err) db = client.db('nodejs-work-request') app.db = db module.exports.db = db console.log('connected') callback(err) }) }
const mongo = require('./server.js') mongo.connect(function(err){ if (err) throw err; }) //login.js
var router = require('express').Router(); var mongo = require('./../server.js')
router.get('/test', (req, res) => { mongo.connect(function (err) { if (err) throw err; mongo.db.collection('users').find().toArray((err, result) => { console.log(result) res.render('users.ejs', { users: result }) }) }) })
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.