Firebase 实现数据库-无法读取属性';初始化关系';未定义成员js的定义

Firebase 实现数据库-无法读取属性';初始化关系';未定义成员js的定义,firebase,firebase-realtime-database,ember.js,emberfire,Firebase,Firebase Realtime Database,Ember.js,Emberfire,这是适配器 在Ember数据中,适配器确定如何将数据持久化到后端数据存储。诸如后端主机、URL格式和用于与RESTAPI对话的头文件等都可以在适配器中配置 /*适配器/application.js*/ 从“emberfire/adapters/firebase”导入FirebaseAdapter; 导出默认FirebaseAdapter.extend({}); 控制器是可路由对象,它从路由接收单个属性。。这是控制器 /*控制器/cars.js*/ 从“@ember/Controller”导入控

这是适配器 在Ember数据中,适配器确定如何将数据持久化到后端数据存储。诸如后端主机、URL格式和用于与RESTAPI对话的头文件等都可以在适配器中配置

/*适配器/application.js*/
从“emberfire/adapters/firebase”导入FirebaseAdapter;
导出默认FirebaseAdapter.extend({});
控制器是可路由对象,它从路由接收单个属性。。这是控制器

/*控制器/cars.js*/
从“@ember/Controller”导入控制器;
导出默认控制器.extend({
行动:{
删除车辆(id){
这个。获取(“存储”)
.findRecord(“car”,id,{reload:true})
.然后(汽车=>{
car.record();
car.save();
//自我运输路线(“汽车”);
});
}
}
});
/*控制器/cars/edit.js*/
从“@ember/Controller”导入控制器;
导出默认控制器.extend({
行动:{
编辑车:功能(id){
var self=这个;
var make=this.get(“model.make”);
var模型=this.get(“model.model”);
var year=此.get(“model.year”);
this.store.findRecord(“car”,id)。然后(function(car){
汽车。设置(“制造”,制造);
车。集(“模型”,模型);
车组(“年”,年);
car.save();
自我运输路线(“汽车”);
});
}
}
});
/*控制器/cars/new.js*/
从“@ember/Controller”导入控制器;
导出默认控制器.extend({
行动:{
addCar:function(){
var self=这个;
var rand=Math.floor(Math.random()*10000+1);
var newCar=this.store.createRecord(“car”{
id:rand,
制作:这个。获取(“卡马克”),
型号:this.get(“carModel”),
年份:本。获取(“carYear”)
});
newCar.save();
自我运输路线(“汽车”);
}
}
});
在Ember数据中,模型是表示应用程序呈现给用户的基础数据的对象。请注意,尽管Ember数据模型共享相同的名称,但它们与Routes上的model方法是不同的概念。。这是模型

/*models/cars.js*/
从“余烬数据”导入DS;
导出默认DS.Model.extend({
make:DS.attr(“字符串”),
型号:DS.attr(“字符串”),
年份:DS.attr(“字符串”)
});
在Ember中,当我们想要创建一个可以使用URL访问的新页面时,我们需要使用Ember CLI生成一个“路由”。。这是路线

/*routes/cars.js*/
从“@ember/routing/Route”导入路由;
导出默认路由。扩展({
模型(){
归还这个.store.findAll(“汽车”{
订购人:“制造”
});
}
});
/*routes/cars/edit.js*/
从“@ember/routing/Route”导入路由;
导出默认路由。扩展({});
/*routes/cars/new.js*/
从“@ember/routing/Route”导入路由;
导出默认路由。扩展({
模型(){
归还这个.store.findAll(“汽车”);
}
});
/*routes/users.js*/
从“@ember/routing/Route”导入路由;
从“jquery”导入$;
导出默认路由。扩展({
模型:函数(){
变量url=”https://api.github.com/users";
返回$.getJSON(url).then(函数(数据){
返回数据。拼接(0,10);
});
}
});
EmberRouter类管理应用程序状态和URL。。这是路由器

/*router.js*/
从“@ember/routing/router”导入EmberRouter;
从“/config/environment”导入配置;
const Router=EmberRouter.extend({
位置:config.locationType,
rootURL:config.rootURL
});
Router.map(函数(){
这条路线(“汽车”,功能(){
本条路线(“新”);
这个.route(“edit”,{path:/edit/:car_id});
});
本条路线(“用户”);
});
导出默认路由器;
模板用于跨多个页面创建标准布局。更改模板时,基于该模板的页面将自动更改。模板提供标准化控件


Github用户
    {{{#每个模型作为|用户}
  • {{user.login}
  • {{/每个}}

{{{#链接到“cars.new”}创建汽车{{/link to}

{{outlet}} 汽车
    {{{#每种车型为|汽车}
  • {{car.year}{{car.make}{{{car.model}}- {{{#链接到“cars.edit”car.id}}编辑{{/link to} 删除
  • {{/每个}}

{{outlet}}

Make:{{input type=“text”value=carMake}

模型:{{input type=“text”value=carModel}

年份:{{input type=“text”value=carYear}

{{input type=“submit”value=“submit”}


Make:{{input type=“text”value=model.Make}

模型:{{input type=“text”value=Model.Model}

年份:{{input type=“text”value=model.Year}

{{input type=“submit”value=“submit”}


这是我的应用程序

当我
删除模型挂钩内的findAll查询时,错误消失
。这可能是firebase配置的一个错误

您没有输入下面的配置。确保在
app/config/environment.js中包含所有这些变量

var ENV = {
  firebase: {
    apiKey: "your-api-key",
    authDomain: "YOUR-FIREBASE-APP.firebaseapp.com",
    databaseURL: "https://YOUR-FIREBASE-APP.firebaseio.com",
    projectId: "YOUR-FIREBASE-APP",
    storageBucket: "YOUR-FIREBASE-APP.appspot.com",
    messagingSenderId: "00000000000"
  }
}
我的应用程序可以与firebase配合使用。请务必遵循以下步骤:

您已经安装了稳定版本和最新版本的
emberfire

"emberfire": "^2.0.10",
"emberfire-exp": "^3.0.0-rc.1-4",

这是不必要的。安装任意一个版本。

如果您使用的是ember cli 3.12.0,当您使用应用程序创建firebase连接时,默认情况下,“emberfire/adapters/firebase”将自动导入adapters/application.js,这不是真的

`/*适配器/application.js*/
从“emberfire/adapters/firebase”导入FirebaseAdapter;

导出默认FirebaseAdapter.extend({})`您是否尝试构建MCVE而不是尝试粘贴整个应用程序?你能用

"emberfire": "^2.0.10",
"emberfire-exp": "^3.0.0-rc.1-4",