40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

014-JazzRecord(ActiveRecord for JavaScript (ORM)検証その2

JazzRecord使う下準備

Titanium.include('test/test_jazzrecord.js');
Ti.include('jazz_record.js');
var Person = new JazzRecord.Model({
  table: "people",
  columns: {
    name: "text",
    age: "number",
    gender: "text",
    home_id: "number",
    has_vehicle: "bool"
  }
});
JazzRecord.fixtures = {
  tables: {
    people: [
      {name: "Nick", age: 28, gender: "m", home_id: 1, has_vehicle: true},
      {name: "Terri", age: 32, gender: "f", home_id: 1, has_vehicle: true},
      {name: "David", age: 23, gender: "m", home_id: 1, has_vehicle: true},
      {name: "Karen", age: 30, gender: "f", home_id: 1, has_vehicle: true},
      {name: "Jesse", age: 24, gender: "m", home_id: 1, has_vehicle: true}
    ]
  }
};

JazzRecord.debug = true;
JazzRecord.adapter = new JazzRecord.TitaniumMobileAdapter({dbFile: "jazzrecord"});
JazzRecord.migrations = {
  1: {
    up: function() {
      JazzRecord.createTable("people", {
        id: "number",
        name: "text",
        age: "number",
        gender: "text",
        home_id: "number",
        income: "float",
        has_vehicle: "bool"
      });
    },
    down: function() {
      JazzRecord.dropTable("people");
    }
  },
  2: {
    up: function() {
      JazzRecord.removeColumn("people", "income");
    },
    down: function() {
      JazzRecord.addColumn("people", "income", "float");
    }
  }
};
JazzRecord.migrate(1);
module("JazzRecord");

test("unit test for JazzRecord",
  function(){
    var jesse = Person.first();
    equals(jesse.age,24);
  }
);

結果

jesseの年齢が取得できると思いきや、Titaniumからこんなエラーを出されて怒られてしまいます。

[ERROR] Script Error = Result of expression 'this.result' [null] is not an object. at jazz_record.js (line 24).

自分と同じ状況なのか定かではないですが、Integrating JazzRecord ORMという人もいるしTitaniumでJazzRecord使ったときのIssue情報見るかぎりjazz_record.jsをTitaniumから利用するにはどこかソース直さないとダメなのかな・・

次回書きたい内容

  • Integrating JazzRecord ORMのコメント欄にあったjoli.jsが使えるのか確認する
  • 'this.result' [null] is not an object. at jazz_record.jsのエラーの件もうちょっと探ってみる