我正在尝试从这样的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"
}
}
答案 0 :(得分:1)
在模型钩子中,尝试使用:
return this.store.findQuery('product', {show: 'sku,name', format: 'json', apiKey: 'MyApIkEy123'});
答案 1 :(得分:1)
你的帖子上有几个问题。
第一个是您的路线中没有App.Product.findQuery
,this.store.find(yoursamequery)
App.Product
DS.Model
延伸DS.Model
而findQuery
没有{{1}} {1}}方法(因此你得到undefined不是一个函数:))
http://emberjs.com/api/data/classes/DS.Model.html
我认为你的“格式”和“apiKey”不是数据过滤器,而是请求参数必须传递给你的后端api吗?如果是这样,您应该使用文档示例中定义的那些参数创建applicationAdapter:
答案 2 :(得分:0)
看起来您正在尝试让API提供不在您的模型中的属性(即sku,salePrice)。是对的吗?对API调用的响应是什么样的?如果Ember Data试图在模型对象中设置这些属性而没有找到它们,则可能是问题所在。