Я пишу инструмент, который будет следить за доставкой грузов в места получения.Это основано на UPS API и скоро DHL.Я извлекаю набор результатов из базы данных MS SQL - ссылки на авианакладные и хочу проверить с помощью API UPS, имеют ли они определенный статус: «Этот пакет удерживается на будущую дату доставки./ Доставка будет перенесена. 'Затем я возвращаю объект JSON с датой и временем доставки для последующего хранения обратно в БД.
Я написал в функции: - один для извлечения AWB из БД - один для получения результатов из проблемы UPS
в том, что я не могу их вкладывать - UPS один не вызывается (игнорируется без ошибок) из другого.
import {upstrack} from './ups';
import {get} from './sql';
get(function(result) {
result.forEach(function (data) {
console.log(data.AWB) // it outputs the AWB numbers to the console correctly
upstrack(data.AWB) // this is not even executed - no error pops in the console
.then(response => console.log(response))
.catch(error => console.log(error));
})
})
upstrack('1Z17704F0470475280') //calling this from the root of file will result with the answer being output to the console
.then(response => console.log(response))
.catch(error => console.log(error));
Есть идеи, как вызвать функцию upstrack (awb) для получения результата?
ups.js файл:
var Tracking = require('./lib/tracking');
var tracking = new Tracking('myhash', 'mylogin', 'mypass');
let upstrack = (awb) => {
return new Promise(
(resolve, reject) => {
tracking.setJsonResponse(true);
tracking.useSandbox(false);
tracking.makeRequest({
customerContext: "Customer Data", trackingNumber : awb
}, function(data, err) {
if (err) {
reject(err)
}
if (data) {
var results = data.TrackResponse.Shipment[0].Package[0].Activity
var AWB = data.TrackResponse.Shipment[0].ShipmentIdentificationNumber[0]
results.forEach(element => {
if (element.Status[0].StatusType[0].Description[0] == 'This package is being held for a future delivery date. / Delivery will be rescheduled.')
{
var response = []
response.push({
awb: AWB,
status: element.Status[0].StatusType[0].Description[0],
date: element.Date[0].replace(/(\d{4})(\d{2})(\d{2})/g, '$1-$2-$3'),
time: element.Time[0].replace(/(\d{2})(\d{2})(\d{2})/g, '$1:$2:$3')
})
resolve(response)
}
});
}
});
}
)
}
export { upstrack }