Имеем ошибку:
{ MongoError: Mod on _id not allowed
at Function.MongoError.create (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb-core/lib/error.js:31:11)
at toError (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb/lib/utils.js:114:22)
at /root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb/lib/collection.js:1007:60
at getLastErrorCallback (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb-core/lib/wireprotocol/2_4_support.js:462:20)
at Callbacks.emit (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:119:3)
at .messageHandler (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:358:23)
at Socket.<anonymous> (/root/projects/datakeeper/node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:292:22)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:172:18)
at Socket.Readable.push (_stream_readable.js:130:10)
at TCP.onread (net.js:542:20)
name: 'MongoError',
message: 'Mod on _id not allowed',
driver: true,
ok: 1,
n: 0,
code: 10148,
errmsg: 'Mod on _id not allowed',
writeConcernError: { code: 10148, errmsg: 'Mod on _id not allowed' } }
Алгоритм действий такой:
1. Вводим логин и пароль и жмем "Войти"
2. Идет запрос:
api/v1/login
3. На сервере при удачной авторизации пишем в сессию данные пользователя и отвечаем JSON-ом
4. Браузеру приходит ответ с данными сессии для Angular (все ОК)
5. После получения ответа с кодом 200 идет смена стэйта на
domen.ru/user/profile, при этом идет проверка сессии:
api/v1/user/session/valid
И вот теперь приходит код 401 и ошибка "Сессия устарела".
Для сессий использую это:
var session = require('express-session');
var MongoStore = require('mongoose-session')(mongoose);
app.use(session({
genid: function(req) {
return uuid.v4();
},
saveUninitialized: false,
resave: true,
cookie: {
name: config.get('session_cookie_name'),
maxAge: (60*60*1000*24),
secure: true
} ,
key: config.get('session_cookie_name'),
secret: config.get('session_cookie_secret'),
proxy: true,
store: MongoStore
}));
Так как проверка валидности сессии заключается в том, что проверяется есть ли она вообще )), то смею предположить, что она вообще не создается. В коллекции sessions пусто.
Проблемы начались после переезда на VDS. На локалке и c9.io все работает.
MongoDB shell version: 2.4.9
UPD#1: Если это важно, то перед Node.js стоит Nginx и включен SSL