文档更新后,Couchbase Lite视图不起作用

时间:2019-01-16 07:06:09

标签: cordova ionic-framework couchbase-lite couchbase-view cordova-android

  1. 我们有榻榻米Lite应用程序。我们使用视图在应用程序上显示数据。有一个设计文档,其中包含四个视图。
  2. 数据库准备就绪后,将创建设计文档和视图。视图仅创建一次。
  3. 当我们更改任何文档或创建要进入视图的新文档时,该视图将在下一次查询时停止返回文档。它给出了错误

    {“错误”:“ bad_request”,“状态”:400,“原因”:“路由器无法将请求路由到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 CLI):4.7.1(AppData \ Roaming \ npm \ node_modules \ ionic)    离子框架:离子角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

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我们发现,couchbase-lite 1.4.4存在上述错误的问题。当我们安装couchbase-lite 1.4.0之后,到现在,一切都将正常工作。