Ответ на ошибку обратного вызова службы http couchdb angularJS не содержит полезной информации.

Я пытаюсь написать некоторые классы CouchDB TypeScript, используя AngularJS http сервис. Вызов работает нормально для "счастливого пути", однако я не могу получить код состояния или информацию об ошибке json с сервера. Конечно, это информация, которую мне действительно нужно предоставить пользователю.

public createDb(name: string, callback: Function) {
    let url = this.urlPrefix + name;
    let cbData: CouchStatus = new CouchStatus;

    this.http.put(url).then((response: any) => {

        cbData.httpStatus = response.status;
        if (response.data.ok === true) {
            cbData.ok = true;
        } else {
            cbData.ok = false;
            cbData.error = response.data.error;
            cbData.reason = response.data.reason;
        }
        callback(cbData);
    }, (httpError: any) => {

        cbData.ok = false;
        cbData.httpStatus = httpError.status;
        cbData.error = httpError.data;
        console.log("createDb: " + cbData.error);
    });
}

Couchdb возвращает статус "400 плохих запросов"

Заголовки:

Access-Control-Allow-Origin → chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
Access-Control-Expose-Headers → Cache-Control, Content-Type, Server
Cache-Control → must-revalidate
Content-Length → 197
Content-Type → text/plain; charset=utf-8
Date → Sun, 17 Apr 2016 01:15:49 GMT
Server → CouchDB/1.6.1 (Erlang OTP/R16B02)

Тело имеет:

{
   "error":"illegal_database_name",
   "reason":"Name: 'fooBar'. Only lowercase characters (a-z), digits (0-9), 
    and any of the characters _, $, (, ), +, -, and / are allowed. Must begin
    with a letter."
}

благодарю вас

1 ответ

Решение

После большого количества ударов головой я обнаружил, что проблема была в CORS. Опция метода вызвала ошибку. Не уверен, что происходит, но это проблема для другого дня.

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