Box Node SDK не тянет файлы с помощью readStream - PullRequest
0 голосов
/ 21 января 2019

У меня есть система из двух частей.Цель системы - сравнить поступающие данные с существующими данными ящика, а затем загрузить zip-файл из ящика.

Часть 1 - У меня есть асинхронная функция, которая вызывает ящик sdk и получает данные файла.Затем он сравнивает имя с уже существующим форматом и возвращает объект.

Часть 2 - Использует ключ / значение, полученные из части 1, для создания потока чтения с существующей папкой на коробке.

У меня проблема в том, что часть 2 никогда не запускается.Я смотрю на слушателей событий или пытаюсь передать прочитанные данные потоку записи, и ничего не происходит.

Мне кажется, что моя проблема здесь в том, что я неправильно выполняю свои асинхронные функции.

Некоторые вещи, которые я знаю, работают: я знаю, что BoxClient работает правильно.Я могу связаться с Box SDK и получить метаданные.Я также могу загружать почтовые файлы в коробку.Загрузка происходит в отдельной функции, не включенной в эту проблему.

Я попытался альтернативно получить URL-адрес загрузки, а затем использовать асинхронный запрос для извлечения данных.Я никогда не получаю данные для загрузки из запроса.То же самое, что когда я пытаюсь использовать поток чтения из коробки sdk.

Как обсуждалось выше, это часть 1.

async function fileLookUp(id, userName, orderNumber, planId) {
  const boxClient = auth();
  const fileIdObj = {
    fileID: id,
  };
  const expectedName = `plan.${userName}.${orderNumber}.${planId}.zip`;

  // Get all box info on given file
  const foundFile = await boxClient.files.get(fileIdObj.fileID);

  const fileName = foundFile.name;

  if (fileName !== expectedName) throw Error(messages.fileSearch);

  fileIdObj.fileName = fileName;

  return fileIdObj;
}

часть 2

async function downloadZip(obj) {
  const boxClient = auth();
  await boxClient.files.getReadStream(obj.fileID, null, (err, stream) => {
    if (err) throw Error(err);
    stream.on('data', data => console.log(data));
  });
}

Iя вызываю функции в jest.

test('should successfully be called', async () => {
      // 'private/plans/'
      const temp = await fileLookUp('329362776631', 'testsurgeon2', '12-15-09-0004', 'plan1');
      await downloadZip(temp);
    }, 30000);

Я ожидаю, что я должен получить данные из потока чтения.

1 Ответ

0 голосов
/ 22 января 2019

Проблема заключалась в том, что тест разрешался до разрешения потока данных.Чтобы устранить проблему и получить возможность передавать данные после извлечения данных, я пообещал всю функцию, чтобы тест ожидал завершения обещания.

...