Javascript 主干关系数据库,使用mysql数据将模型表示为表行
假设mysql中有两个表:汽车和引擎 Cars表行将具有以下结构:Javascript 主干关系数据库,使用mysql数据将模型表示为表行,javascript,backbone.js,backbone-relational,Javascript,Backbone.js,Backbone Relational,假设mysql中有两个表:汽车和引擎 Cars表行将具有以下结构: id:int engineId:int(指向engines.id列的外键) 品牌:字符串 引擎表行此行: id:int 类型:字符串(假设我们有电动和柴油发动机) 所以,我想从这些表中检索所有数据,在客户端创建模型集合,最后显示具有合并结果的表: 车号 品牌名称 发动机类型 所以,我试过很多例子,但我不知道我做错了什么。你能帮忙吗 // Create car model window.Car = Backbone.R
:intid
:int(指向engineId
列的外键)engines.id
:字符串品牌
:intid
:字符串(假设我们有电动和柴油发动机)类型
- 车号
- 品牌名称
- 发动机类型
// Create car model
window.Car = Backbone.RelationalModel.extend({
});
// Create engine model
window.Engine = Backbone.RelationalModel.extend({
relations: [{
type: 'HasMany',
key: 'cars',
relatedModel: 'Car',
reverseRelation: {
key: 'engine',
includeInJSON : 'engineId',
}
}]
});
// Create engine instance
var engine = new window.Engine({
id : 1,
type : 'electric',
});
// Create car instance
var car = new window.Car({
id : 1,
brand : 'Toyota',
engineId : 1,
});
// i expect to get 'electric'
console.log(car.getRelation('engine').type);
试试这个:
// Create car model
var Car = Backbone.RelationalModel.extend({
});
// Create engine model
var Engine = Backbone.RelationalModel.extend({
relations: [{
type: 'HasMany',
key: 'cars',
relatedModel: Car,
reverseRelation: {
key: 'engine'
}
}]
});
// Create engine instance
var engine = new Engine({
id : 1,
type : 'electric'
});
// Create car instance
var car = new Car({
id : 1,
brand : 'Toyota',
engine : 1
});
// get 'electric'
console.log(car.get('engine').get('type'));
是的,这是可行的,但是您还没有在相关的任何地方指定
engineId
字段。这是否意味着,当我们定义keyengine
backbone时,会自动查找engineId
字段?是的。您犯了三个错误:1)relatedModel:需要RM模型,2)engineId-不在任何地方声明,3)关系的getRelation返回规则