JSON двойное кодирование значения - PullRequest
0 голосов
/ 24 сентября 2018

Итак, я хотел бы сохранить сеанс для пользователей в моей базе данных Mongo db.Я использую пакеты exp-session и connect-mongo npm.

const MongoStore = require('connect-mongo')(session);
const session = require('express-session');

app.use(session({
  secret: 'secret',
  resave: true,
  saveUninitialized: false,
  store: new MongoStore({
    mongooseConnection: db
  })
}));

Я сохраняю его в сеансе

req.session.userId = IdOfUserFromDatabaseQuery;

{
    "_id" : "hcog9Z9Jjawb5joIax-z1Wv7txV--nYA",
    "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"summoner\":\"Blis\",\"summonerId\":\"5ba7ec0293b6220cc2f12959\"}",
    "expires" : ISODate("2018-10-07T20:39:41.911Z")
}

Ключ сеанса: значение кодируется как "{\" cookie\ ": ... и я хочу, чтобы оно было {cookie: ...

. Я искал и обнаружил, что этот тип кодирования означает, что он имеет двойную кодировку. Я проверил. Я не кодирую его, когдаЯ помещаю это в сессию, что означает, что, вероятно, происходит то, что express-session автоматически кодирует JSON, а также когда я использую ...

store: new MongoStore({
    mongooseConnection: db
  })
}));

для подключения сеанса к базе данных mongo, это, вероятно,кодирование снова. Как мне предотвратить его кодирование при сохранении в базе данных с помощью функции MongoStore.

1 Ответ

0 голосов
/ 24 сентября 2018

Я понял это.Таким образом, модуль connect-mongo имеет возможность json преобразовать данные в строку перед их отправкой.

    app.use(session({
  secret: 'work hard',
  resave: true,
  saveUninitialized: false,
  store: new MongoStore({
    mongooseConnection: db,
    stringify: false <---- This is set to true by default, which was causing my data to get double JSON encoded.
  })
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...