Как получить уведомление о каждом изменении с сервера couchbase? - PullRequest
0 голосов
/ 31 января 2020

Database.addChangeListener не работает некоторое время в Couchbase Lite 1.4.4.

Ниже мой код

 database?.addChangeListener { event ->
    //using for only changed documents
    Log.e("changes",""+event.changes)

   val query = database?.createAllDocumentsQuery()
    query?.allDocsMode = Query.AllDocsMode.ALL_DOCS
    var result: QueryEnumerator? = null
    result = query?.run()
    val it = result

    if (it != null) {
        arrayList.clear()

        while (it.hasNext()) {
            val row = it.next()
            if (row.documentId.startsWith("refill-device-SERIAL-")) {
                obj = JSONObject(row.document.properties)
                val canisters = gson.fromJson(obj.toString(), Canisters::class.java)
                arrayList.add(canisters)
            }
        }
    }

    canistersArrayList.postValue(arrayList)
}

Над кодом не срабатывает когда-нибудь ... Что я должен делать, если хочу получать каждое изменение событий из базы данных?

1 Ответ

1 голос
/ 31 января 2020

версии 1.4.4 исполнилось несколько лет; вам действительно следует использовать более новую версию, например 2.7, особенно если вы просто создаете прототипы.

Я не знаю, почему ваш код не будет перехватывать все изменения базы данных. Какие конкретные изменения не обрабатываются?

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

...