Box Node SDK无法使用readStream

时间:2019-01-21 17:32:24

标签: javascript node.js async-await box

我目前有一个两部分的系统。该系统的目的是根据现有的包装盒数据评估传入数据,然后从包装盒下载一个zip文件。

第1部分-我有一个异步函数,该函数调用sdk框并获取文件数据。然后,它根据预先存在的格式评估名称并返回一个对象。

第2部分-利用从第1部分接收的键/值来创建一个读取流,并在框上显示一个现有文件夹。

我遇到的问题是第2部分从未触发过。我查看了事件侦听器,或尝试将读取的数据通过管道传输到写入流,但没有任何反应。

我认为这里的问题是我没有正确实例化异步函数。

一些我知道可以起作用的东西:    我知道BoxClient工作正常。我可以联系Box SDK并提取元数据。我还可以将zip文件上传到框。上载以单独的功能进行,该功能未包含在此问题中。

我试图替代地下载下载URL,然后使用async-request来提取数据。我从未从请求中获得任何下载数据。与我尝试利用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));
  });
}

我正在开玩笑地调用这些函数。

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 :(得分:1)

问题是测试在数据流可以解析之前就已解析。为了解决该问题,并获得在检索数据后进行管道传输的功能,我对整个功能做了保证,以便测试将等待诺言完成。