【问题标题】:Use a nested route for fetching data from the server使用嵌套路由从服务器获取数据
【发布时间】:2015-07-05 11:00:39
【问题描述】:

我想向 RESTful 服务器询问给定 categoryproducts。服务器对两者都有一个嵌套路由。所以/categories/1/products这个路径只会导出ID为1的category的产品。

在我当前的应用程序中,我有一个获取第一个category 和所有products 的路由。这是资源的浪费。如何更改 Ember Data 使用服务器的嵌套路径仅获取 productscategory

route.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return {
      category: this.store.find('category', 1),
      products: this.store.find('product')
    };
  }
});

app/category/model.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  products: DS.hasMany('product', { async: true })
});

app/product/model.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string')
});

app/application/adapter.js

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  host: 'http://www.example.com',
  namespace: 'api/v1',
});

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我通常这样做的方式是通过查询字符串。

    this.store.query('products', {category : 1});
    //for older ember-data version use syntax below
    //this.store.fetch('products', {category : 1});
    

    这会生成

    http://www.example.com/api/v1/products?category=1
    

    您的服务器方法可以选择合适的产品


    实际上再次查看您的问题,您可以执行以下操作以避免任何服务器更改。

    export default Ember.Route.extend({
      model: function() {
        return {
          let promise = this.store.find('category', 1);
          category: promise , //mmmm ... this line might not work because I have chained a .then() onto it below, if not try this.store.find('category', 1).  Get back to me with your findings.
          products: promise.then(function(category) {
              return category.get('products').then(function(products) {
                  return products;
              });
          });
        };
      }
    });
    

    【讨论】:

    • 这是“正确”的解决方案,但 OP 暗示他想找到一种使用现有端点定义的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2021-12-12
    相关资源
    最近更新 更多