from Joose expands with new ORM on Ajaxian

Malte 씨가 JavaScript의 메타 객체 시스템인 Joose의 작업을 계속해 상당한 양의 문서를 추가했다고 합니다

Joose는 예제 섹션에 Gears 데이터베이스의 간단한 객체 관계 매퍼를 포함합니다. Gears가 설치되어있다면 실행해보세요.

테스트 수트가 실행되고나면 데이터베이스 테이블을 나타내는 클래스들의 목차가 있는 클래스 브라우저가 보입니다. 예제는 두 개의 엔티티를 포함하고 있습니다(MyEntities 모듈에 있는 Car와 Person).

다음과 같이 컨셉 증명 OR 매퍼로 엔티티를 정의하세요:
Module("MyEntities", function (m) {
   Class("Car", {
       isa:  ORM.Entity,

       has: {
           owner: {
               metaclass: ORM.HasOne,
               isa:       function () { return m.Person }
           }
       },

       classMethods: {
           tableName: function () {
               return "car"
           }
       }
   })

   Class("Person", {
       isa:  ORM.Entity,

       classMethods: {
           tableName: function () {
               return "person"
           }
       },

       has: {
           mother: {
               metaclass: ORM.HasOne,

           isa:       function () { return m.Person }
           },

           cars: {
               metaclass:  ORM.HasMany,

               isa:        function () { return m.Car },

               foreignKey: "owner"
           }

       }

   });
});

사용예는 이렇습니다:
// Create the mother
var mother = new MyEntities.Person();

mother.name("elke");
mother.city("Elmshorn");
mother.save();

// Create the son
var person = new MyEntities.Person();

person.name("malte");
person.city("Hamburg");
person.mother(mother); // set the mother
person.save();

// Give the son 10 cars :)
for(var i = 0; i <10; i++) {
    var car = new MyEntities.Car();

    car.model("3."+i);
    car.brand("bmw");
    car.owner(person);
    car.save();
}

// refetch the person from the db
var personFromDb = Entities.Person.newFromId(person.rowid());

alert(personFromDb.mother().name()) // will alert 'elke'
alert(personFromDb.cars()[0].brand()) // will alert 'bmw'


Posted by 행복한고니 트랙백 0 : 댓글 0

댓글을 달아 주세요