Базовое хранилище данных с JayData

Я пытаюсь реализовать свое первое приложение на основе JayData. Мне нужно приложение HTML5/JavaScript для хранения сложных данных на стороне клиента (в основном отношения «один ко многим»).

Моя модель выглядит так (извините, если имена не очень явные):

введите здесь описание изображения

Я пытался перевести его с помощью JayData, поправьте меня, если я ошибаюсь:

$data.Entity.extend("Test", {
    Id: { type: "int", key: true, computed: true },
    Name: { type: "string", required: true, maxLength: 200 },
    Chapters: { type: Array, elementType: "Chapter", inverseProperty: "Test" }
});

$data.Entity.extend("Chapter", {
    Id: { type: "int", key: true, computed: true },
    Name: { type: String, required: true, maxLength: 200 },
    Test: {type: "Test", inverseProperty: "Chapters" },
    Checks: { type: Array, elementType: "Check", inverseProperty: "Chapter" }
});

$data.Entity.extend("Check", {
    Id: { type: "int", key: true, computed: true },
    Name: { type: String, required: true, maxLength: 200 },
    Status: { type: "int", required: true },
    Chapter: { type: Chapter, inverseProperty: "Checks" }
});

$data.EntityContext.extend("CheckDb", {
    Tests: { type: $data.EntitySet, elementType: Test },
    Chapters: { type: $data.EntitySet, elementType: Chapter },
    Checks: { type: $data.EntitySet, elementType: Check }
});

ИЗМЕНИТЬ

Как заполнить все таблицы? Для начала я пробовал:

var myDB = new CheckDb({ 
    name: 'local', databaseName: 'CheckDatabase'
});

myDB.onReady(function() {
    myDB.Tests.add({
        Name: "Test 1"
    });
    myDB.saveChanges();
});

Но что, если я хочу добавить Chapters и Checks к Test?

Спасибо


person Maxbester    schedule 13.03.2013    source источник


Ответы (2)


Хорошо, я наконец нашел это сам:

myDB.onReady(function() {
    var check = new Check({Name: "Check 1", Status: 1});
    var chapter = new Chapter({Name: "Chapter 1"});
    chapter.Checks = new Array();
    chapter.Checks.push(check);

    var myTest = myDB.Tests.add({
        Name: "Test 1",
        Chapters: [chapter]
    });
    myDB.saveChanges();
});

Это было не так сложно :)

person Maxbester    schedule 13.03.2013

Ваш код в порядке. Я создал jsfiddle с вашим кодом, и он работает, не меняя ни одного символа. включите jQuery 1.8+ и затем http://include.jaydata.org/jaydata.js

person Gabor Dolla    schedule 13.03.2013
comment
Да, я перечитал свой вопрос, и он не отражал того, что я хотел спросить :) Я только что обновил его. Как заполнить все таблицы? - person Maxbester; 13.03.2013