是否可以配置数据库或模型根路径?

时间:2016-12-17 23:34:20

标签: ember.js firebase firebase-realtime-database emberfire

TL; DR :当通过EmberFire使用带Ember的Firebase时,是否有办法定义根据火力库数据库保存更改的根位置,对于整个余烬实例,或者每个模型的基础?

示例:给定secret模型,默认情况下会在secret中存储新的/secrets/<secret GUID>/,我们是否可以将EmberFire配置为使用子路径作为根,所以a将在/<some_path>/secrets/<secret GUID>/创建新秘密?

假设我们将firebase数据库配置为在开发期间支持多个版本的应用程序:

{
  "versions" : {
    "0_0_1" : {
      "isActive" : true
    },
    "0_0_2" : {
      "isActive" : false
    }
  }
}

这个secret.js模型:

import DS from 'ember-data';

export default DS.Model.extend({
  content     : DS.attr('string', { defaultValue() { return "UNDEFINED"; } }),
});

默认情况下,保存新的秘密对象时,会在数据库的根目录下创建“secrets”部分:

{
  "versions" : {
    "0_0_1" : { ... },
    "0_0_2" : { ... }
  },
  "secrets" : {
    "<GUID>" : { "content" : ... }
  }

}

可能在0.0.2中不再使用'秘密'模型,因此如果我们可以将EmberFire配置为仅将secret对象存储为{{1 }}:

/versions/0_0_1/

理想情况下,我想将我的ember应用程序配置为仅将位置{ "versions" : { "0_0_1" : { "isActive" : true, "secrets" : { "<GUID>" : { "content" : ... } } }, "0_0_2" : { "isActive" : false } }, } 视为数据库根目录。

就应用而言,数据库仅包含:

/versions/0_0_1/

据我所知,在生产中,如果对象架构发生巨大变化,每个应用版本应该只有一个firebase数据库,但不幸的是google只提供了这么多免费数据库,因此在测试时会很好能够让多个应用程序访问同一个数据库,只使用不同的子路径。

当我尝试将{ "isActive" : true, "secrets" : { "<GUID>" : { "content" : ... } } } 中的firebase.databaseURLconfig/environment.js更改为<MyApp>.firebaseio.com/时,我收到错误消息

  

FIREBASE FATAL ERROR:数据库URL必须指向a的根目录   Firebase数据库(不包括子路径)

所以我假设这可能不受支持,至少通过<MyApp>.firebaseio.com/versions/0_0_1/配置选项。是否可以使用另一种选择?

或者,是否有基于每个模型的方法来配置根路径而不是全局路径?

0 个答案:

没有答案