Я пытаюсь завершить заполнение списка результатами службы OData, я добавил в свой проект следующую библиотеку Rest: https://github.com/javorosas/react-native-rest-client
Я создал класс клиента следующим образом:
import RestClient from 'react-native-rest-client';
export default class ServiceOrdersOData extends RestClient {
constructor () {
super('https://my000000.sapbydesign.com/sap/byd/odata/analytics/ds/Crmsoscb.svc', {
headers: {
Authorization: 'Basic X1NFSURPUjpJbmljaW8wMQ=='
},
});
}
getServiceOrdersOData () {
// Send the url query as an object
return this.GET('/Crmsoscb');
}
};
Это работает просто отлично, теперь на реальном экране я добавил кнопку и обработал ее событие onPress.
CallOData(){
const api = new ServiceOrdersOData();
const odataValues = api.getServiceOrdersOData();
console.log(odataValues);
}
Если я проверяю консоль, я вижу, что odataValues возвращает все записи из службы OData, которая, если она выполняется в браузере, имеет следующий формат:
{
"d": {
"results": [
{
"__metadata": {
"uri": "https://my000000.sapbydesign.com/sap/byd/odata/analytics/ds/Crmsoscb.svc/Crmsoscb('.7~0000000000011DDFBEA73CE3794B5D1A')",
"type": "CrmsoscbSvc.CrmsoscbType"
},
"ID": ".7~0000000000011DDFBEA73CE3794B5D1A",
"C_DbaServiceOrg": "00000000-0001-1DDF-B9FF-7D69E6266BF2",
"C_DicIncCataId": "0000000000000000010010000",
"C_DicIncCatId": "0000000000000000010014172",
"C_DocId": "00000000000000000000000000000000001",
"C_DocPostDate": "/Date(1290729600000)/",
"C_DocSAgCorLc": "3",
"C_DocUuid": "00000000-0001-1DDF-BEA7-3CE3794B5D1A",
"C_DpyBuyerCntry": "US",
"C_DpyBuyerPoscd": "14204",
"C_DpyBuyerPty": "00000000-0001-1DDF-BA84-90748A78DCE3",
"C_DpyBuyerRegn": "NY",
"C_DpyBuyAbc": "A",
"C_DpyBuyCity": "Buffalo",
"C_DpyBuyInds": "42",
"C_DpyBuyIndscsy": "0005",
"C_DpyBuyNieid": "",
"C_DpyProcPty": "00000000-0001-1DEF-BAD7-B58B002BEC36",
"C_DpySalesUnit": "00000000-0001-1DDF-B9FF-7D69E6266BF2",
"C_DpySrvsupTeam": "00000000-0001-1DDF-B9FF-7D69E6266BF2",
"C_DpySrvExTeam": "00000000-0001-1DDF-B9FF-7D69E6266BF2",
"C_DpySrvPerform": "00000000-0001-1DEF-BAD7-B5BC90EE6C36",
"C_DroMatProcCat": "00000000-0001-1DEF-BA9F-2DABDB415385",
"C_DroMatProdTy": "1",
"C_DroRefoIndmat": "00000000-0001-1DEF-BAEB-6DD8248A2BA6",
"C_DroRefoMat": "00000000-0001-1DEF-BAEA-3DA13AD047A6",
"C_DsrProcCataid": "0000000000000000010010000",
"C_DsrProcCatid": "0000000000000000010014000",
"C_DsrSrvPrior": "3",
"C_DsrWarranty": null,
"C_DttInitMonth": "--11",
"C_DttInitQuartr": "--Q4",
"C_DttInitRecDt": "/Date(1290729600000)/",
"C_DttInitWeekdy": "5",
"C_DttInitYear": "2010",
"C_DttInitYrmon": "2010-11",
"C_DttInitYrquar": "2010-Q4",
"C_DttInitYrweek": "2010-W47",
"T_DocName": "Combi 75: Below average heat output",
"NodeId": "0000000000011DDFBEA73CE3794B5D1A",
"Count": 1
}
]
}
}
Что я хочу сейчас сделать, так это заполнить список на экране этими записями, скажем, с помощью T_DocName и C_DocId.
Я знаю о функции с именем map, но не знаю, как ее использовать в данном конкретном случае.
Заранее спасибо за помощь!
Редактировать:
Итак, я попробовал пару рекомендаций, но когда я пытаюсь получить odataValues.d.results, это выдает мне следующую ошибку: Cannot read property 'results' of undefined
Я полагаю, это связано с тем, что возвращаемый ответ - это не коллекция, а нечто, называемое Обещанием? Я прилагаю скриншот того, как выглядит console.log самого возврата:

Как вы можете видеть там, есть странная структура, и мой ответ содержится в:
_55:
d:{results: Array(291)}
Есть предложения?
Еще раз спасибо!