Ember.js 评估App.Product.findQuery时出错

Ember.js 评估App.Product.findQuery时出错,ember.js,ember-data,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.a

我试图从如下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'});
        }
    });
    {
        "from": 1,
        "to": 10,
        "total": 10,
        "products": [
            {
                "sku": 1234567,
                "name": "Great Product"
            }
    }
我在控制台中得到的错误是:

处理路由时出错:未定义的索引不是函数(评估'App.Product.findQuery({show:'sku,name',format:'json',apiKey:'MyApIkEy123'))

JSON应该如下所示:

    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'});
        }
    });
    {
        "from": 1,
        "to": 10,
        "total": 10,
        "products": [
            {
                "sku": 1234567,
                "name": "Great Product"
            }
    }

看起来您正试图让API提供不在模型中的属性(即sku、salePrice)。是这样吗?对该API调用的响应是什么样子的?如果余烬数据试图在模型对象中设置这些属性,但没有找到它们,这可能就是问题所在。

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


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

您的帖子中有几个问题

第一个是,您不在路线中运行
App.Product.findQuery
,而是运行
this.store.find(yoursamequiry)
as
App.Product
扩展
DS.Model
DS.Model
没有
findQuery
方法(因此,未定义的不是函数:)

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


我添加了JSON格式。但我不确定是否有人提出这个要求。我在Safari中的Web Inspector的时间线中没有看到它。它看起来好像没有salePrice,但这可能无关紧要。如果它没有调用API,我怀疑您可能设置了错误的适配器。也许可以尝试将它拉到它自己的类中,然后逐步完成设置模型挂钩的代码。没关系,我把我认为正确的答案投了上去。如果它们不在标题中,它们是否仍在应用程序适配器中。因为API文档说这都在URL中:/然后,您可以使用
var tmpUrl=this.\u super()
探索构建url方法:),然后将您的参数添加到
tmpUrl
例如…对于初学者,您有一些
buildUrl
的示例吗?我尝试了一个基本的未经测试的示例:关于返回的JSON的格式,您必须对其进行自定义。接收到的数据必须编译为Ember使用的jsonapi标准。您可以在定义适配器时指定头,有关详细信息,请参阅。