Как настроить магазин EXTJS4 для CRUD Couch DB? - PullRequest
3 голосов
/ 09 сентября 2011

Как откалибровать магазин Extjs 4 для простого CRUD из / в couchDb?

Ответы [ 5 ]

5 голосов
/ 15 апреля 2012

Я разработал библиотеку SenchaCouch, чтобы упростить использование CouchDB в качестве единственного сервера для размещения как кода приложения, так и данных.Проверьте это в https://github.com/srfarley/sencha-couch.

5 голосов
/ 09 сентября 2011

Для нашей последней встречи с Остином Сенчей был подготовлен демонстрационный проект, в котором показано подключение Ext 4 к Couch и MongoDB:

https://github.com/coreybutler/JSAppStack

В частности этот класс , вероятно, поможет вам начать работу.

3 голосов
/ 03 октября 2011

В REST-прокси ExtJS 4 вы найдете множество тонкостей, которые могут замедлить вас. этот краткий пост суммирует основные из них:

  1. В вашем классе Model вы должны либо определить свойство id в жестком коде, либо использовать idProperty, чтобы указать одностолбец как 'id'.

  2. Код на стороне сервера должен возвращать все обновленные записи в браузер.CouchDB обычно возвращает только _id и _rev, поэтому вам придется найти способ получить весь документ самостоятельно.

  3. Помните, что формат записи в "data "должен быть в формате JSON.

  4. Убедитесь, что в вашем классе Model реализован хотя бы один Validator, поскольку в исходном коде ExtJS AbstractStore.js вы можете найти следующий код, которыйможет всегда возвращать true для новой созданной записи в плагине RowEditing, когда для хранилища установлено значение autoSync = true.

    filterNew: function(item) {
        // only want phantom records that are valid
        return item.phantom === true && item.isValid();
    },
    

Этот последний элемент, на мой взгляд, является ошибкой дизайна.Функция isValid () должна по праву возвращать true по умолчанию и полагаться на то, что разработчик выдаст ошибку при возникновении проблем.

Конечный результат заключается в том, что, если у вас нет валидатора для каждого поля, обновления никогда не получатотправлено на CouchDB.Вы не увидите никакой ошибки, она просто ничего не сделает.

3 голосов
/ 11 сентября 2011

Я хотел бы отметить, что для полной реализации возможностей CRUD с демоверсией требуется некоторая модификация. CouchDB требует, чтобы вы добавляли ревизии для любой операции обновления / удаления. Это также может вызвать некоторые проблемы с атрибутами поля в прокси Ext REST. Есть проект под названием mvcCouch, на который стоит взглянуть. Этот проект ссылается на плагин, который должен помочь с полными операциями CRUD против CouchDB.

1 голос
/ 01 марта 2014

Я только что выпустил две библиотеки обновлений для Sencha Touch и CouchDB соответственно (на основе предыдущей работы С. Фарли). Они поддерживают запись вложенных данных и базовую CRUD.

https://github.com/rwilliams/sencha-couchdb-extjs

https://github.com/rwilliams/sencha-couchdb-touch

...