1

私は、express-resourceを使用してマングースモデルを管理するnode.jsバックエンドを持っています。

MarionetteJSフロントエンドがあります。

私の例の2つのオブジェクトは、組織とプロジェクトです。

私のサーバーはリソースを次のようなuriに連結しますexample.com/api/v1/organization/12/project

IDは、mongodbから提供するため一意です。私がするだけならそれはうまくいくでしょう../project/2

しかし、組織内でプロジェクトを受け取るには、無国籍のために最初のプロジェクトしか実行できません。

クライアント側にバックボーンモデルがあります。このようなベースURLはapi/v1/organization正常に機能すると判断しましたが、組織のプロジェクトを取得するにはどうすればよいですか?次のようなベースURLで新しいモデルを作成する必要がありますapi/v1/organization/:orgId/projectか?

どうすればこれを行うことができますか?

私が言いたいことを理解していただければ幸いです。助けていただければ幸いです。

4

1 に答える 1

1

あなたはこのようなことをすることができます:

var ProjectModel = Backbone.Model.extend({
   initialize: function(attrs, options) {
       if( options && options.organizationId){
          this.urlRoot = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
       }
   }
});

var ProjectCollection = Backbone.Collection.extend({
   initialize: function(models, options) {
       this.url = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
   },
});

// fetch one single project, not in a collection
var model = new ProjectModel({id: 4}, {organizationId: 7});
model.fetch();

// fetch all projects
var collection = new ProjectCollection(null, {organizationId: 7});
collection.fetch();

urlRootモデルがコレクション内にある場合、Backboneはモデルのコレクションurlをベースとして使用するため、は必要ありません。

于 2013-02-16T09:48:23.540 に答える