yarkov
@yarkov
Помог ответ? Отметь решением.

Как исправить ошибку Mongo?

Имеем ошибку:
{ 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
  • Вопрос задан
  • 593 просмотра
Решения вопроса 1
yarkov
@yarkov Автор вопроса
Помог ответ? Отметь решением.
Все просто! Обновился до 3.2.6
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы