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.databaseURL
从config/environment.js
更改为<MyApp>.firebaseio.com/
时,我收到错误消息
FIREBASE FATAL ERROR:数据库URL必须指向a的根目录 Firebase数据库(不包括子路径)
所以我假设这可能不受支持,至少通过<MyApp>.firebaseio.com/versions/0_0_1/
配置选项。是否可以使用另一种选择?
或者,是否有基于每个模型的方法来配置根路径而不是全局路径?