Подтвердить что ты не робот

Метеоритная сессия и браузер обновляются

Получают ли сеансы Meteor reset при обновлении страницы?

По какой-то причине я не думал, что они это сделали, но похоже, что они это делают. Есть ли способ сделать их упорными?

Если бы это не было лучшим решением для этого?

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

4b9b3361

Ответ 1

Собственно, что вы можете сделать, это создать "подкласс" сеанса, который сохраняет значение в хранилище Amplify, когда вызывается set(). Вы автоматически наследуете все реактивные свойства Сессии. Вот код, он работал у меня:

SessionAmplify = _.extend({}, Session, {
  keys: _.object(_.map(amplify.store(), function(value, key) {
    return [key, JSON.stringify(value)]
  })),
  set: function (key, value) {
    Session.set.apply(this, arguments);
    amplify.store(key, value);
  },
});

Просто замените все сеансы Session.set/get на вызовы SessionAmplify.set/get. Когда вызывается set(), вызывается родительский метод Session, а также amplify.store(). Когда "подкласс" сначала создается, он загружает все, что находится в усиленном хранилище внутри своих ключей, так что их можно сразу получить с помощью get().

Вы можете проверить рабочий вариант примера Leaderboard здесь: https://github.com/sebastienbarre/meteor-leaderboard

Ответ 2

Это старый вопрос, но это второй удар по поиску "диспетчера сеансов метеоритов", поэтому я считаю важным добавить, что пакет u2622: persistent-session отлично решает эту проблему.

из документов: https://atmospherejs.com/u2622/persistent-session

Установка

Метеор добавить u2622: постоянный сеанс

Что это! Теперь вы можете использовать Session.setPersistent для установки сеанса переменная, которая будет сохранена после обновления.

Если вы хотите, вы также можете использовать Session.set. См. Опции ниже.

Ответ 3

Я только что создал пакет UserSession для атмосферы, который в основном основан на пользовательском постоянном Session.

Ответ 4

Итак, я думаю, что лучший способ сделать это - использовать пакет amplifyJS.

Вот какой-то смысл, который показывает, как они его использовали: https://gist.github.com/2865146

Ответ 5

Session - это хранилище значений глобального ключа, реактивное.

http://docs.meteor.com/#session

Сессия предоставляет глобальный объект на клиенте, который вы можете использовать для хранения произвольного набора пар ключ-значение. Используйте его для хранения вещей, подобных текущему выбранному элементу в списке.

Что особенно важно в Сессии, так это то, что она реактивна. Если вы вызовите Session.get( "currentList" ) изнутри шаблона, шаблон будет автоматически перезагружен всякий раз, когда вызывается Session.set( "currentList", x).

Если вам нужно что-то сохранить в клиенте, вы можете использовать браузеры localstorage или файлы cookie, если вам нужны старые браузеры.