赛尔夫加入了蝙蝠侠



如何在Batmanjs中实现自连接?

在rails中,它是这样的:

class Employee < ActiveRecord::Base
  has_many :subordinates, class_name: "Employee", foreign_key: "manager_id"
  belongs_to :manager, class_name: "Employee"
end

我现在的Batmanjs等效模型是这样的:

class Employee extends Batman.Model
  @resourceName: 'employees'
  @storageKey: 'employees'
  @persist Batman.LocalStorage
  @has_many 'subordinates', name: "Employees", foreignKey: "manager_id"
  @belongs_to 'manager', name: "Employee"

我想应该可以,如果你只是切换:

  • has_many/ belongs_to => hasMany/ belongsTo
  • name: "Employees" => name: "Employee"

另外,您可能必须使用LocalStorage适配器为id添加编码器。LocalStorage将值转换为字符串,但batman.js期望的是整数,所以你必须在编码器中将其强制转换回整数。

下面是一个自连接的例子(您也可以从那里复制粘贴编码器):

http://jsbin.com/cukapedo/18/edit

为后人而贴:

class App.Color extends Batman.Model 
  @resourceName: 'color'
  @persist Batman.LocalStorage
  @encode 'name', 'source_color_id'
  # required for numbers in localStorage:
  @encode 'id', 
    encode: (val) -> +val
    decode: (val) -> +val
  @hasMany 'child_colors', name: 'Color', foreignKey: 'source_color_id'
  @belongsTo 'source_color', name: 'Color'

最新更新