我有一个node.js后端使用express-resource来管理我的猫鼬模型。
我有一个MarionetteJS前端。
我的例子是两个对象是组织和项目。
我的服务器将资源汇总到像example.com/api/v1/organization/12/project
ids是独特的,因为我是从mongodb服务的。如果我只做../project/2
但是为了接收组织内的项目,我只能做第一个项目,因为无国籍。
我现在在客户端有Backbone模型。我确定了一个像api/v1/organization
这样的基本网址这很好用,但我怎样才能获得组织的项目?我是否必须使用api/v1/organization/:orgId/project
等基本网址创建新模型?
我该怎么做?
我希望你能理解我想说的话,感谢任何帮助!
答案 0 :(得分: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
作为基础。