Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干关系数据库,使用mysql数据将模型表示为表行_Javascript_Backbone.js_Backbone Relational - Fatal编程技术网

Javascript 主干关系数据库,使用mysql数据将模型表示为表行

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

假设mysql中有两个表:汽车和引擎

Cars表行将具有以下结构:

  • id
    :int
  • engineId
    :int(指向
    engines.id
    列的外键)
  • 品牌
    :字符串
引擎表行此行:

  • id
    :int
  • 类型
    :字符串(假设我们有电动和柴油发动机)
所以,我想从这些表中检索所有数据,在客户端创建模型集合,最后显示具有合并结果的表:

  • 车号
  • 品牌名称
  • 发动机类型
所以,我试过很多例子,但我不知道我做错了什么。你能帮忙吗

// 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
字段。这是否意味着,当我们定义key
engine
backbone时,会自动查找
engineId
字段?是的。您犯了三个错误:1)relatedModel:需要RM模型,2)engineId-不在任何地方声明,3)关系的getRelation返回规则