如何在适配器中使用findQuery调用api?

时间:2015-08-06 17:02:41

标签: ember.js

我试图从我的ember应用程序发出api调用。

我有这样的网址格式:

xxx.xxx.xxx.xxx/movies?where={"title": { "contains" : "" }, "year": "", "active": { "!" : "false" }}

但我不知道如何将变量title,years等传递给适配器中的api调用。

我已经有这样的事情:

export default DS.ActiveModelAdapter.extend({
namespace: movies,
host: 'http:// xxx.xxx.xxx.xxx’,
buildURL: function(type, id, record){
  console.log("Building URL: ", type);
  var url = this._super(type, id, record);
  console.log("Building URL: ", url);
  return url;
 }
});

我想我需要像findQuery这样的东西,但我不知道如何使用它。谁能解释一下?

1 个答案:

答案 0 :(得分:0)

我不熟悉ActiveModelAdapter,但不是movies复数形式的movie,这是您的型号名称?在这种情况下,您不应该拥有名称空间movies。名称空间是前缀,如果您在模型名称之前有/api/v1 。与http://<your_domain>/api/v1/<model_name>一样。

EmberJS查询必须是键值对。并且网址不支持该结构(他们需要进行URL编码)。但是,您可以在进行查询之前将对象转换为JSON:

var whereQuery = {"title": { "contains" : "" }, "year": "", "active": { "!" : "false" }}
this.store.query('movie', {where: JSON.stringify(whereQuery}))

所以你的适配器可能就像这样留空:

export default DS.ActiveModelAdapter.extend({});