Ember.js - rest适配器向错误的url发送请求

时间:2015-07-16 15:15:45

标签: javascript rest ember.js

我的模型定义如下:

服务器

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网址发送请求,但没有为其添加正确的路径。我该怎么办?

1 个答案:

答案 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')
});