JazzRecord使う下準備
- githubにあるbuildされたやつを自分のプロジェクトのResources配下にコピー
- 自分はユニットテストにQUnitを使っている(詳しくはこちら)ので、tests_to_run.jsに以下を記述
Titanium.include('test/test_jazzrecord.js');
- JazzRecordの使い方についてはしっかりとしたドキュメントがあるので、そこのサンプルソースを参考に、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のエラーの件もうちょっと探ってみる