我正在尝试在前端使用 Ember js 构建一个简单的应用程序,并且我在服务器上运行了一个 RESTful 服务器,它返回数据库表的 JSON 表示形式。
该数据库有三个表:用户、帐户、事务。该应用程序的工作方式有点像银行账户。一个用户有很多账户,一个账户属于一个用户并且有很多交易,一个交易属于一个账户。
我的模型是这样描述的
// Models
App.Store = DS.Store.extend({
revision: 11,
adapter: DS.RESTAdapter.create({
url: 'http://api.mydomain.ca'
})
});
App.User = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
accounts: DS.hasMany('App.Account')
});
App.Account = DS.Model.extend({
ownedBy: DS.belongsTo('App.User'),
transactions: DS.hasMany('App.Transaction')
});
App.Transaction = DS.Model.extend({
account: DS.belongsTo('App.Account'),
amount: DS.attr('number'),
description: DS.attr('string'),
timestamp: DS.attr('date')
});
我的控制器:
//Controllers
App.UserController = Ember.ObjectController.extend();
App.AccountsController = Ember.ArrayController.extend();
App.TransactionsController = Ember.ArrayController.extend();
和我的路线:
// Router
App.Router.map(function() {
this.resource('users', function() {
this.resource('user', {path:':user_id'});
}); // '/#/users/:user_id'
});
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('users');
}
});
App.UsersRoute = Ember.Route.extend({
model: function() {
return App.User.find();
}
});
App.UserRoute = Ember.Route.extend({
model: function(params) {
return App.User.find(params.user_id);
},
setupController: function(controller, model) {
this.controllerFor('accounts').set('model', App.Account.find({ownedBy:model.id}));
}
});
我正在使用主 - 细节布局。当您在“/users/3”访问我的应用程序时,它会在左侧显示用户列表,在右侧显示用户 3 的详细信息。在详细信息中,我希望能够显示帐号、帐户余额和交易清单。
所以这是我不确定的事情。我的数据库用户表有 id、first_name 和 last_name。将帐户和用户之间的关系放在帐户表中对我来说是有意义的,而不是必须在用户表中维护帐户列表。我的帐户表有一个 id 字段和一个 own_by 字段,其中包含拥有该帐户的用户的 id。我的事务表也是如此。我不必在帐户中维护交易列表,而是在交易表中有一个帐户字段,其中包含该交易的帐户 ID。这对我来说是有意义的,但我不确定这是否适合 Ember 期望数据的方式。
我能够使用以下方法在我的用户路由的 setupController 方法中将帐户连接到用户:
this.controllerFor('accounts').set('model', App.Account.find({ownedBy:model.id}));
但我不知道如何将交易链接到帐户。
有人可以帮我解决这个问题吗?谢谢 :)