0
我正在嘗試設置我的第一個Mongo認證系統,直到我嘗試創建會話用戶使用快速會話。MongoDB/Monk/Express-Sessions安裝問題(「無法序列化用戶」)
我的用戶路由沒問題 - 我可以註冊並登錄,它反映在數據庫中 - 但是一旦我開始創建會話的步驟,就會出現「無法序列化用戶進入會話」錯誤。
我懷疑的錯誤是在我建立了我的會議方式:
//var MongoStore = require('connect-mongostore')(session);
app.use(session({
//store: new MongoStore({ db: 'callcongress', url: 'mongodb://localhost:27017/callcongress', collections: ['usercollection', 'sessions']}),
secret: process.env.SECRET_KEY,
resave: false,
saveUninitialized: true,
}));
的store
和MongoStore
線的那一刻註釋掉....讓他們在作如下發生(變化我刷新頁面):
- 服務器掛起,不響應
Error getting collection: sessions <Error: Error setting TTL index on collection : sessions <Error: Error setting TTL index on collection : sessions <Error: Cannot determine state of server>>>
Cannot determine state of server
(我試圖尋找了這個錯誤,但是這一切的那它是關於Heroku上部署的其他問題嗎?)
我曾嘗試MongoStore
一束套不同的選項,所有這些都相同的結果。
這裏是在終端發生了什麼,當我登錄(console.logs的控制檯的結果):
{ _id: 58ab42c1f0a05388ce3b2348,
username: 'test16',
name: 'test',
password: '$2a$10$i6sip04Jw6ylk83aOfnXIui7dszBIbe0OEdLSNVsRHQe8Xquy1r7O',
email: '[email protected]',
district: 'New York 5th' }
got it
POST /auth/login 500 115.327 ms - 1003
這裏就是我的序列化/反序列化的方法是這樣的:
const passport = require('passport');
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/callcongress');
const userCollection = db.get('usercollection');
module.exports =() => {
var user_cache = {};
passport.serializeUser(function(user, next) {
console.log('in serialize');
let id = user._id;
user_cache[id] = user;
done(null, id);
});
passport.deserializeUser((id, done) => {
console.log('in deserialize 1');
userCollection.findById(id)
.then((user) => {done(null, user_cache[id]);})
.catch((err) => {done(err, null);});
});
};
這裏沒有console.logs輸出任何東西,這也讓我感到困惑。不過,我本地策略結束時的策略確實奏效。
我已經研究了一些Mongoose,寧願不要在這一點上使用它 - 我在掙扎MongoDB的概念,而沒有在混合中添加其他東西。任何洞察力將不勝感激。