Поиск направления на ошибку pouchdb

error:"unauthorized"
id:"_design/db"
message:"You are not a db or server admin."
name:"unauthorized"
ok:true
reason:"You are not a db or server admin."
rev:"137-81fe83389359c1cfb50bf928f3558b81"
status:500

Pouchdb пытается выдвинуть проектный документ после полной деинсталляции / переустановки приложения (поэтому локальный pouchdb должен был быть удален). Я предполагаю, что это где-то в потоке изменений. Но странная часть в том, что couchdb находится на ревизии 133, а не на 137.

Как это исправить? Я попробовал компакт, но это не сработало. Единственный очевидный ответ, который я могу придумать, - вручную внести изменения в дизайн на диване, чтобы он был новее 137.

Я запустил поиск в потоке изменений, используя этот код

var http=require('http');
var url = "http:/server/db/_changes?style=all_docs";
http.get(url, function(res){
    var body = '';

    res.on('data', function(chunk){
        body += chunk;
    });

    res.on('end', function(){
        var test = JSON.parse(body);
        test.results.forEach(function(item,index){
            if (item.id==="_design/db"){
                console.log(item);
            }
        });
    });
}).on('error', function(e){
    console.log("Got an error: ", e);
});

И получил 1 результат, вер 133, правильный. Так откуда же взялся pouchdb?

- Редактирование Удаление базы данных пакетов, по-видимому, исправит ее до следующей установки приложения.

2 ответа

Код ошибки 500 который на основании документации:

500 - внутренняя ошибка сервера

Запрос был недействительным, либо потому что предоставленный JSON был недействительным, либо неверная информация была предоставлена ​​как часть запроса.

Кроме того, сообщение об ошибке и причина указывают, что:

сообщение:"Вы не администратор БД или сервера."

причина:"Вы не администратор БД или сервера".


Я думаю, что ошибка может быть вызвана администратором базы данных и разрешениями участника. Поскольку обычные пользователи / роли членов базы данных не могут создавать документы разработки PUT, только пользователи / роли администратора базы данных могут создавать документы разработки PUT:


Вы упомянули, что:

Это действительно просто потому, что у телефона есть какая-то будущая версия дизайн-документа...

Если есть проблема с пересмотром, должно быть получено 409 - Conflict ошибка НЕ 500 - Internal Server Error,


Я не уверен, просто идея.

Получается, что теперь Android использует диск Google для создания резервных копий indexdb. Это приводило к тому, что установленная версия приложения продолжала получать будущую версию документа после отката базы данных во время тестирования. Единственный способ обойти это, я нашел это сделать.

.on('denied', function (result) {
    if (result.doc.error === "unauthorized" && result.doc.id === "_design/db") {
        //catastrophic failure
        var DBDeleteRequest = window.indexedDB.deleteDatabase("_pouch_");

        DBDeleteRequest.onerror = function (event) {
            console.error("Error deleting database.");
            throw new Error("Error deleting database.");
        };

        DBDeleteRequest.onsuccess = function (event) {
            console.log("Database deleted successfully");
            window.location.reload(); //reload the app after purge
        };
    }
}

Даже pouchdb.destroy не сможет полностью решить проблему. Это что-то вроде ядерного решения с орбиты.

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