Проблемы с созданием базы данных Jaydata indexedDb

У меня есть эта проблема с jayData: я пытаюсь создать эту простую базу данных:

var x=$data.Entity.extend("Person",
{
  ID: {type: "int", key:true, required: true},
  Name: {type: "string", required: true}
});

$data.EntityContext.extend("PersonDatabase",
{
  People: {type: $data.EntitySet, elementType: Person}
});

var DB1=new PersonDatabase({
  provider: 'webSql',
  databaseName:'DB1',
});

Который отлично работает. Но когда я просто переключаю тип базы данных на indexxedDb, это ничего не делает.

var x=$data.Entity.extend("Person",
{
  ID: {type: "int", key:true, required: true},
  Name: {type: "string", required: true}
});

$data.EntityContext.extend("PersonDatabase",
{
  People: {type: $data.EntitySet, elementType: Person}
});

var DB1=new PersonDatabase({
  provider: 'indexedDb',
  databaseName:'DB1',
  version: 1
});

Любые идеи?


person AutomaticHourglass    schedule 10.05.2013    source источник


Ответы (1)


В этом коде нужно исправить только одну вещь: поле ID должно быть вычисляемым вместо обязательного. Как только вы измените его, JayData автоматически сгенерирует для вас идентификатор.

var x=$data.Entity.extend("Person",
{
    Id: {type: "int", key:true, computed: true},
  Name: {type: "string", required: true}
});

$data.EntityContext.extend("PersonDatabase",
{
  People: {type: $data.EntitySet, elementType: Person}
});

var DB1=new PersonDatabase({ provider: 'indexedDb', databaseName:'DB1', version: 1 });

DB1.onReady(function() {
    DB1.People.add({ Name: 'Jay Data'});
    DB1.saveChanges();
});

Это решит вашу проблему?

person Robesz    schedule 10.05.2013
comment
К сожалению нет. Я попробовал точно такой же код, но база данных indexeddb не создана. Когда я смотрю, что с переменной DB1, я вижу: PersonDatabase {lazyLoad: false, trackChanges: false, _entitySetReferences: Object, _storageModel: Array[1], _isOK: резервный вариант поставщика не удался!…}. Есть ли у вас какие-либо идеи? - person AutomaticHourglass; 14.05.2013
comment
Попробуйте включить /jaydataproviders/IndexedDbProvider.js после jaydata.js. - person Robesz; 14.05.2013
comment
Один вопрос: В каком браузере это происходит? - person Robesz; 14.05.2013
comment
Я понял это, я включил базу данных websql и indexeddb на той же странице, удалил одну websql, база данных заработала. НО, созданная база данных не отображается на вкладке chrome-›inspect element/resources, хотя я могу запросить базу данных, и она дает правильные результаты. @Robesz, я попробовал первый, ничего не изменилось. Во-вторых, браузер Google Chrome v26. - person AutomaticHourglass; 14.05.2013
comment
Иногда я забываю, что мне нужно было щелкнуть Refresh IndexedDb, чтобы получить записи в окне ресурсов Chrome. Это стандартное поведение Chrome, которое разочаровывает после удобного использования проверки таблиц Web SQL. Вы получаете записи после щелчка правой кнопкой мыши -> обновить Indexeddb? - person Robesz; 14.05.2013