我目前有一个两部分的系统。该系统的目的是根据现有的包装盒数据评估传入数据,然后从包装盒下载一个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);
我希望我应该从读取流中获取数据。
答案 0 :(得分:1)
问题是测试在数据流可以解析之前就已解析。为了解决该问题,并获得在检索数据后进行管道传输的功能,我对整个功能做了保证,以便测试将等待诺言完成。