Представления Couchbase Lite не работают после любого обновления документа

  1. У нас есть приложение couchbase lite. Мы используем представления для отображения данных в приложении. Существует один дизайн документа, который содержит четыре вида.
  2. Проектный документ и представления создаются после того, как база данных готова. Представления создаются только один раз.
  3. Когда мы меняем какой-либо документ или создаем новый документ, который был бы передан в представление, представление перестает возвращать документы при следующем запросе. Это дает ошибку

    {"error":"bad_request","status":400,"reason":"Маршрутизатор не может перенаправить запрос на do_GET_DesignDocumentcom.couchbase.lite.CouchbaseLiteException: невозможно индексировать представление cceDesignDoc/draftTransactionView: блок карты не зарегистрирован, статус: 400 (HTTP 400 bad_request)"}

  4. Представление работает, когда мы используем Couchbase Lite 1.4.0. Это не работает, когда мы обновляем до 1.4.4.

Мы используем представления через REST API, подобные следующим:

http://a638931f-0e15-7389-1ae0-q1f7491ac748:72e61883-ca1d-8391-ad1e-474299b8c9a3@localhost:5984/local2368288277/_design/abcDesignDoc/_view/peterAbcTransactionView?

Пожалуйста, смотрите соответствующий код ниже:

// This method is called when app starts up. It is called only once.    
public createView(){
    this.platform.ready().then(() => {
        (new Couchbase()).openDatabase(AppUrl.LOCAL_DB_NAME).then(database => {
            this.database = database;
            let views = {
                myAbcTransactionView: {
                    map: function (doc) {
                        if (doc.type == "myAbcTransaction") {
                            emit(doc._id, doc)
                        }
                    }.toString()
                },
                johnAbcTransactionView: {
                    map: function (doc) {
                        if (doc.type == "johnAbcTransaction") {
                            emit(doc._id, doc)
                        }
                    }.toString()
                },
                peterAbcTransactionView: {
                    map: function (doc) {
                        if (doc.type == "peterAbcTransaction") {
                            emit(doc._id, doc)
                        }
                    }.toString()
                },
                jennaAbcTransactionView: {
                    map: function (doc) {
                        if (doc.type == "jennaAbcTransaction") {
                            emit(doc._id, doc)
                        }
                    }.toString()
                }
            };

            this.database.createDesignDocument("_design/abcDesignDoc", views);

            this.database.listen(change => {
                this.listener.emit(change.detail);
            });
        }
    }

//This method is called to show records in the view on the screen   
public showRecords() {
    this.couchbase.getDatabase().queryView("_design/abcDesignDoc", "peterAbcTransactionView", {}).then((result: any) => {
      this.transactions = [];

      for (var i = 0; i < result.rows.length; i++) {
        this.zone.run(() => {

          this.transactions.push(result.rows[i].value);
          this.transactions.sort(function (b, a
          ) {
            return a.theDate - b.theDate;
          });
        });
      }
    }, error => {
    });
  }

Информация о версии:Ionic:

ionic (Ionic CLI): 4.7.1 (AppData \ Roaming \ npm \ node_modules \ ionic) Ionic Framework: ионно-угловой 3.3.0 @ionic/app-scripts: 1.3.7

Кордова:

cordova (Cordova CLI): 8.1.2 (cordova-lib@8.1.1) Платформы Cordova: Android 7.1.4 Плагины Cordova: плагинов в белом списке нет (всего 14 плагинов)

система:

NodeJS: v6.14.4 (C: \ Program Files \ nodejs \ node.exe) npm: 3.10.10 ОС: Windows 10

Couchbase Lite: 1.4.4

Couchbase-Lite-PhoneGap-Plugin: ( https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin)

1 ответ

Мы обнаружили, что у couchbase-lite 1.4.4 есть проблема с вышеуказанной ошибкой. Когда мы устанавливаем couchbase-lite 1.4.0 и после этого все будет работать нормально до сих пор.

Смотрите: https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-Plugin/issues/109

Эта вилка должна работать в соответствии с проблемой: https://github.com/lasselaakkonen/Couchbase-Lite-PhoneGap-Plugin/tree/fix-cordova-android-7-dependencies

Другие вопросы по тегам