Метеоритная сессия и браузер обновляются
Получают ли сеансы Meteor reset при обновлении страницы?
По какой-то причине я не думал, что они это сделали, но похоже, что они это делают. Есть ли способ сделать их упорными?
Если бы это не было лучшим решением для этого?
Я хочу, чтобы те же данные отображались, если пользователь обновляется (эти данные являются специфическими для пользователя), даже если они еще не зарегистрированы.
Ответы
Ответ 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, если вам нужны старые браузеры.