我的模型定义如下:
服务器
DS.Model.extend({
name: DS.attr('string'),
databases: DS.hasMany('database', {async: true})
});
数据库
DS.Model.extend(BaseModelMixin, {
name: DS.attr('string'),
server: DS.belongsTo('server'),
schemas: DS.hasMany('schema', {async: true})
});
路由器设置如下:
Router.map(function() {
this.resource('servers', { path: '/' }, function() {
this.resource('server', { path: '/servers/:serverid'}, function () {
this.resource('databases', { path: '/databases' }, function () {
this.resource('database', { path: '/:databaseid'}, function () {
this.resource('catalogues', { path: '/catalogues' });
this.resource('eventtriggers', { path: '/eventtriggers' });
this.resource('extensions', { path: '/extensions' });
this.resource('schemas', { path: '/schemas' }, function () {
this.resource('schema', { path: '/:schemaid' }, function () {
this.resource('new-table');
this.resource('tables', { path: '/tables' }, function () {
this.resource('table', { path: '/:tableid' });
});
});
});
this.resource('replication', { path: '/replication' });
});
});
});
});
});
在我的应用程序中,我有一个菜单,允许我在服务器和它的数据库之间导航。在执行此操作时,DS.RESTAdapter
向模拟服务器发送请求以检索数据。应该向这些网址发送请求:
/api/servers
/api/servers/1
/api/servers/1/databases
/api/servers/1/databases/1
它向/api/databases
网址发送请求,但没有为其添加正确的路径。我该怎么办?
答案 0 :(得分:0)
您可能需要定义适配器。请在Ember指南中查看此页面:http://guides.emberjs.com/v1.12.0/models/the-rest-adapter/。
如果没有定义适配器,它会在您当前的域中查找api文件夹。
基本上,你想做这样的事情:
export default DS.RESTAdapter.extend({
host: 'https://api.example.com'
});
希望这有帮助。
<强>更新强>
这是我使用Ember-CLI(稍微编辑)的当前项目中的一些代码。也许这里有一个金块:
<强>适配器:强>
import DS from "ember-data";
export default DS.RESTAdapter.extend({
host: 'http://localhost:8080'
});
<强>路线:强>
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('human', {'path': '/humans'}, function() {
this.route('edit', {'path': ':human_id/edit'}, function() {
this.route('remove', { path: 'remove' });
});
this.route('add');
});
<强>型号:强>
人类
import Ember from 'ember';
import DS from 'ember-data';
export default DS.Model.extend({
categories: DS.hasMany('category', {async: true}),
groups: DS.hasMany('group', {async: true}),
tags: DS.hasMany('tag', {async: true}),
first_name: DS.attr('string'),
last_name: DS.attr('string'),
born: DS.attr()
});
类别
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string')
});