Невозможно создать объект datacontext для провайдера IndexedDB с помощью JayData Framework 1.3.1

Я не могу создать объект datacontext для провайдера IndexedDb, используя инфраструктуру Jaydata 1.3.1, и получаю сообщение «Ошибка резервного копирования FailedProvider!» сообщение для $todo.context.onReady().

Каков синтаксис для определения поставщика данных для IndexedDB? Я нашел приведенный ниже код в документации Jaydata, но он не работает, потому что API «$ data.types.storageProviders» не отображает в нем класс «indexedDb».

$news.context = new $news.Types.NewsContext({ name: "indexedDb", databaseName: "NewsReader", dbCreation: $data.types.storageProviders.indexedDb.DbCreationType.DropStoreIfOlderVersion, version: 1 });

<script src="Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="Scripts/jaydata.js" type="text/javascript"></script>

<script type="text/javascript">

    $(function () {

        $data.Entity.extend('$todo.Types.ToDoEntry', {
            Id: { type: 'int', key: true, computed: true },
            Value: { type: 'string' },
            CreatedAt: { type: 'datetime' },
            ModifiedAt: { type: 'datetime' },
            Done: { type: 'bool' }
        });

        $data.EntityContext.extend('$todo.Types.ToDoContext', {
            TodoEntries: { type: $data.EntitySet, elementType: $todo.Types.ToDoEntry }
        });

        $('#Button1').click(function (e) {
            var provider = "indexedDb";
            var options = { name: provider, databaseName: 'todo'};
            loadContext(options);

            return false;
        });

        $('#btnAdd').click(function () {
            var value = 'ravi';
            if (!value) return;
            var now = new Date();
            var entity = new $todo.Types.ToDoEntry({ Value: value, CreatedAt: now, ModifiedAt: now });

            try {
                $todo.context.TodoEntries.add(entity);
            }
            catch (Error) {

                alert(Error.Message);
            }
            $todo.context.saveChanges(updateView);
        });

        return false;
    });

    function loadContext(options) {

        $todo.context = new $todo.Types.ToDoContext(options);

        try {
            $todo.context.onReady({
                success: function () {
                    alert("Sucessfully");
                },
                error: function (error) {
                    alert("Failed" + error);
                    $todo.context = null;

                },
                notify: function (e) {

                    var result = e.value;

                    alert('Notify');
                }
            });
        }
        catch (Error) {
            alert(Error.Message);
        }
    }

</script>

person user699169    schedule 22.08.2013    source источник
comment
Тот же вопрос был размещен на форуме JayData, и обсуждение было начато - jaydata.org /forum/viewtopic.php?f=3&t=274   -  person Robesz    schedule 22.08.2013


Ответы (1)


Это происходит, когда вы используете библиотеку, на которую ссылается локальная файловая система, и jaydataproviders folder (и провайдеры в ней) рядом с jaydata.js. Вам понадобится IndexedDbProvider.js и InMemory. Эти файлы можно найти в выпущенных пакетах. Пакет последней версии

person Robesz    schedule 23.08.2013