Env: チタン 3.1.3、合金 1.2.2。
モデル/コレクションの永続化のために次のアダプターを使用しています: https://github.com/viezel/napp.alloy.adapter.restapi
コレクションの URL 構造が単一のモデルとは異なる API があります。次の点を考慮してください。
単一のレコードを取得するには:[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
。これは、多くのレコードがある悪夢になります。ここで何が欠けていますか?