【问题标题】:Meteor session namespaceMeteor 会话命名空间
【发布时间】:2013-10-13 10:45:30
【问题描述】:

有没有办法命名 Meteor.js 会话?在较大的应用程序中可能会发生我不小心替换现有会话的情况。如果我使用命名空间会话,这个机会会更低。

我想到的当前实现中唯一的解决方案是:

Session.set('namespace1Value');
Session.set('namespace2Value');

我想做这样的事情:

var sectionFoo = Session.section('foo');
sectionFoo.set('bar');

Meteor 会支持 Session 命名空间吗?

【问题讨论】:

  • 可以将命名空间 'foo' 保留为另一个会话变量吗?然后Session.set( Session.get('namespace') + 'bar', value_for_foo_bar)

标签: session meteor


【解决方案1】:

我认为这应该可以满足您的需求。如果您觉得它有用,您可能希望将其打包并发布到 Atmosphere。

_.extend(Session, {
  /**
   * Returns a wrapper around Session
   * which automatically prepends
   * the specified name to all keys.
   *
   * @method namespace
   * @param {String} name Name of namespace
   * @param {String} [separator] Separator for prepended
   *                 name. Default is '-'
   * @return {Object} Namespaced session object
   */
  namespace: function (name, separator) {
    var ns;

    separator = separator || '-';
    ns = name + separator;

    return {
      get: function (key) {
        return Session.get(ns + key);
      },
      set: function (key, value) {
        return Session.set(ns + key, value);
      },
      setDefault: function (key, value) {
        return Session.setDefault(ns + key, value);
      },
      equals: function (key, value) {
        return Session.equals(ns + key, value);
      }
    }
  }
});

【讨论】:

    【解决方案2】:

    正如this 谈话中所见,本地反应状态将成为 Meteor UI 的一部分,我们可以期待 Meteor 1.0(将于 2014 年初推出)。目前,我只使用长会话变量名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2012-09-21
      相关资源
      最近更新 更多