Ember.js 评估App.Product.findQuery时出错
我试图从如下API获取数据: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
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)
asApp.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标准。您可以在定义适配器时指定头,有关详细信息,请参阅。