评估App.Product.findQuery时出错

时间:2014-12-22 21:59:37

标签: ember.js ember-data

我正在尝试从这样的API获取数据:

    App.Store = DS.Store.extend({
        revision: 12,
        adapter: DS.RESTAdapter.create({
            host: 'http://api.my-api/v1/products(name=my-name)'
        })
    });

    App.Product = DS.Model.extend({
        name: DS.attr('string')
    });

    App.ApplicationRoute = Ember.Route.extend({
        model: function () {
            return App.Product.findQuery({show: 'sku,name', format: 'json', apiKey: 'MyApIkEy123'});
        }
    });

我在控制台中遇到的错误是:

Error while processing route: index undefined is not a function (evaluating 'App.Product.findQuery({show: 'sku,name', format: 'json', apiKey: 'MyApIkEy123'})')

JSON应如下所示:

    {
        "from": 1,
        "to": 10,
        "total": 10,
        "products": [
            {
                "sku": 1234567,
                "name": "Great Product"
            }
    }

3 个答案:

答案 0 :(得分:1)

在模型钩子中,尝试使用:

return this.store.findQuery('product', {show: 'sku,name', format: 'json', apiKey: 'MyApIkEy123'});

答案 1 :(得分:1)

你的帖子上有几个问题。

第一个是您的路线中没有App.Product.findQuerythis.store.find(yoursamequery) App.Product DS.Model延伸DS.ModelfindQuery没有{{1}} {1}}方法(因此你得到undefined不是一个函数:)) http://emberjs.com/api/data/classes/DS.Model.html

我认为你的“格式”和“apiKey”不是数据过滤器,而是请求参数必须传递给你的后端api吗?如果是这样,您应该使用文档示例中定义的那些参数创建applicationAdapter:

http://emberjs.com/api/data/classes/DS.RESTAdapter.html

答案 2 :(得分:0)

看起来您正在尝试让API提供不在您的模型中的属性(即sku,salePrice)。是对的吗?对API调用的响应是什么样的?如果Ember Data试图在模型对象中设置这些属性而没有找到它们,则可能是问题所在。