Объединение данных из двух разных API и разбор ответа (узлы машинописи) - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я работаю над бэкэндом API RESTful, используя nodejs с машинописью, где мне нужно собрать информацию из нескольких различных API, проанализировать результат и передать проанализированную информацию внешнему интерфейсу.Прямо сейчас я работаю над маршрутом API, где я собираю информацию из двух разных внешних маршрутов API, я собираю данные оттуда с помощью https.Я отправляю данные в мой Objecthandler в виде [object Object], [object Object], потому что я помещаю ответ от моего первого http-вызова в массив, а мой второй http-ответ - в другой массив, который я затем помещаю в третий массив, которыйэто объединенные данные из обоих ответов.

const first: object [] = [
];
const second: object [] = [
];
const combined: object [] = [
];

Мой код обработчика объекта выглядит следующим образом:

function ObjectHandlerAvainsanat(obj: any): object[] {
const keywords: object [] = [
];
if (obj instanceof Array) {
obj.forEach((e: any) => {
const results = e.results.map((x: any) => x);
const vals = {
localname: results.localname,
prefLabel: results.prefLabel,
altLabel: results.altLabel,
};
keywords.push(vals);
});
return keywords;
}
}

Однако я получаю ошибку, что

const results = e.results.map((x) => x);
^

TypeError: Cannot read property 'map' of undefined

Фактические данные внутри ответа http выглядят так, где я хочу получить значения из массива объекта результатов:

{
"@context": {
"skos": "http://www.w3.org/2004/02/skos/core#",
"isothes": "http://purl.org/iso25964/skos-thes#",
"onki": "http://schema.onki.fi/onki#",
"uri": "@id",
"type": "@type",
"results": {
"@id": "onki:results",
"@container": "@list"
},
"prefLabel": "skos:prefLabel",
"altLabel": "skos:altLabel",
"hiddenLabel": "skos:hiddenLabel",
"@language": "FI"
},
"uri": "",
"results": [
{
"uri": "http://www.yso.fi/onto/yso/p22020",
"type": [
"skos:Concept",
"http://www.yso.fi/onto/yso-meta/Concept"
],
"localname": "p22020",
"prefLabel": "pyydystä ja päästä -kalastus",
"lang": "fi",
"altLabel": "catch and release -kalastus",
"vocab": "yso"
},
{
"uri": "http://www.yso.fi/onto/yso/p22337",
"type": [
"skos:Concept",
"http://www.yso.fi/onto/yso-meta/Concept"
],
"localname": "p22337",
"prefLabel": "CATCH-22",
"lang": "fi",
"vocab": "yso"
}

Кто-нибудь здесь знает, что я делаю неправильно?Заранее спасибо за помощь, Br, Victor

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

(при условии, что e - это ваш http-ответ)

На основе предоставленного вами HTTP-ответа e - это объект JSON, поэтому вы можете вызвать:

let newVar = JSON.parse(e);

и затем попытаться получитьиспользование результатов:

newVar.results.map((x: any) => x);

Надеюсь, это поможет ...

0 голосов
/ 10 сентября 2018

TypeError: Невозможно прочитать свойство 'map' из неопределенного

e.results is undefined.Это факт, независимо от того, какой объект результата вы показываете.

Исправьте

console.log(e) и идите оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...