Тип ответа на запрос JavaScript

1

У меня возникла проблема, следуя руководству по HTTP запросам. Я не могу получить код для автоматического анализа моего ответа на JSON. Это остается текстом. Хотя указано, что при указании "json: true" это устанавливает тип json и анализирует.

Учебное пособие: https://www.terlici.com/2015/04/28/couchdb-node-express.html

var request = require('request');

var url = 'http://127.0.0.1:5984/';
var db = 'js-express-librarytutorial/';
var id =  'document_id';

request.put(url + db);

request.put({
    url: url + db + id,
    body: {
        user: "Tom",
        message: "Document 2"
    },
    json: true
}, function(){request(url + db + id, function(err, res, body) {
        console.log(typeof (body));
        console.log(body);
        console.log(body.user + ' : ' + body.message);
    })
});

Кто-нибудь знает, как инициировать автоматический анализ http-calls.

  • 0
    что показывает console.log (body)?
  • 0
    Typeof (body) возвращает тип: строка. Само тело является строкой json, отправленной в БД. Идея в том, что я возвращаю json из БД, так как json выходит, и он будет сохранен на диване как json. Нет логики в том, чтобы быть строкой возврата.
Показать ещё 8 комментариев
Теги:
http-post

2 ответа

0
Лучший ответ

Таким образом, исследование показало, что моя проблема связана с определением областей охвата и функциями функции обратного вызова в моем первоначальном обращении.

json: true аргумент при вызове запроса устанавливает тип содержимого в application/json. Это автоматически использует синтаксический анализ любых возвращаемых данных:

request({url: url+db+"1", method: 'get', json: true}, function(err, res, body) {
    if (err) {
        throw err;
    }
    console.log(typeof (body));
    console.log(body);
});

В этом примере не требуется синтаксический анализ и возвращается объект.

Однако, когда я устанавливаю обратный вызов в анонимной функции с помощью отдельного запроса, тип контента возвращается к тексту /*

С анонимным обратным вызовом:

request.put(url + db, function(err, res, body){
    request.put({
        url: url + db + id,
        body: { user : "Tom", message: "Document"},
        json: true
    },function(){
        request(url+db+id,,  function(err, res, body){
            console.log(typeof (body));
            console.log(body);
        });
    });
});

Этого можно предотвратить:

  • Указание типа содержимого при отдельном вызове запроса

Пример:

request.get({...}, function(){request({url: url+db+id, method: "GET", json: true},  function(err, res, body){})}
  • Удалите отдельный запрос запроса и обработайте возвращаемые данные в обратном вызове напрямую:

Пример:

request({url: url+db+"1", method: 'get', json: true}, function(err, res, body) {...});
1

Попробуйте отправить requestData в json следующим образом:

    request.put({
    url: url + db + id,
    json: ' { "user": "Tom", "message": "Document 2" }'
}, function(){request(url + db + id, function(err, res, body) {
        console.log(typeof (body));
        console.log(body);
        console.log(body.user + ' : ' + body.message);
    })
});

Это может сработать. У меня нет прав комментировать вопросы. В противном случае я должен был предложить в комментарии. Следовательно, размещение в качестве ответа. Пожалуйста, дайте мне знать, если это сработает для вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню