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

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

Войти через центр авторизации
Похожие вопросы