У меня возникла проблема, следуя руководству по 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
.
Таким образом, исследование показало, что моя проблема связана с определением областей охвата и функциями функции обратного вызова в моем первоначальном обращении.
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) {...});
Попробуйте отправить 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);
})
});
Это может сработать. У меня нет прав комментировать вопросы. В противном случае я должен был предложить в комментарии. Следовательно, размещение в качестве ответа. Пожалуйста, дайте мне знать, если это сработает для вас.