环境:钛 3.1.3,合金 1.2.2。
我正在使用以下适配器对模型/集合进行持久性:https ://github.com/viezel/napp.alloy.adapter.restapi
我有一个 API,其集合的 URL 结构与单个模型的不同。考虑以下:
获取单个记录:[GET] /files/:id
获取用户的所有文件:[GET] /users/:id/files
我有以下架构files.js
:
exports.definition = {
config: {
"URL": "https://my.api.here/files",
//"debug": 1,
"adapter": {
"type": "restapi",
"collection_name": "files",
"idAttribute": "id"
}
},
extendModel: function(Model) {
_.extend(Model.prototype, {});
return Model;
},
extendCollection: function(Collection) {
_.extend(Collection.prototype, {
initialize: function(){
this.url = "http://my.api.here/users/"+this.user_id+"/files";
}
});
return Collection;
}
}
我在上面尝试做的是覆盖集合初始化方法来更改集合的 URL 结构。然后我相应地调用它:
var currentUserFiles = Alloy.createCollection("files", {user_id:"12345"});
currentUserFiles.fetch({
success: function(files){
console.log("Woo! Got the user's files!");
console.log(JSON.stringify(files.models));
},
error: function(){
console.log("Nope");
}
});
这行不通。该fetch()
方法只是继续尝试调用/files
. 在创建集合后,我尝试将 url 设置为集合的属性,但这也不起作用。理想情况下,我想对本地实例和集合的单例版本都这样做。
所以 - 问题是:我可以为集合使用与模型不同的 URL 吗?显然,我不想只调用/files
和排序/过滤客户端 - 这将是一个有很多记录的噩梦。我在这里想念什么?