У меня есть простая функция обратного вызова Node.js, которая возвращает данные клиентскому приложению после получения ответа от стороннего API.
reqHandlers.foods.get = (category_id, callback): void => {
// Create Request Options
const options = {
host: 'example.com',
port: 1234,
path: `/api/foods?id=${category_id}`,
method: 'GET'
}
https.get(options, (res) => {
let data = '';
// A chunk of data has been receieved.
res.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received.
res.on('end', () => {
// do something with the response data
extractFieldsFromResponse(JSON.parse(data))
.then(simpleData => {
callback(200, simpleData);
})
// Error handling
}).on('error', (e) => {
callback(500, e);
});
}
Поскольку мне нужно извлечь определенные поляиз объекта ответа мне нужно дождаться ответа до конца, но объект simpleData
все еще слишком велик, чтобы отправить его обратно на клиентскую сторону с помощью функции обратного вызова, поэтому я попытался преобразовать его в поток записи с помощьюзамена callback(200, simpleData);
на:
...
const writableStream = new Stream.Writable();
writableStream._write = (simpleData, encoding, next) => {
next();
};
...
Однако это не разрешает запрос GET, и клиентская сторона не получает никакого ответа от сервера.
Может кто-нибудь сказать мне, какмогу я передать поток simpleData
объект на клиентскую сторону, пожалуйста? Заранее спасибо!