javascript - Box Node SDK 不使用 readStream 提取文件
问题描述
我目前有一个两部分系统。该系统的目标是根据现有的盒子数据评估传入的数据,然后从盒子下载一个 zip 文件。
第 1 部分 - 我有一个异步函数,它调用 box sdk 并获取文件数据。然后它根据预先存在的格式评估名称并返回一个对象。
第 2 部分 - 利用从第 1 部分接收到的键/值来创建一个读取流,其中包含现有文件夹。
我遇到的问题是第 2 部分永远不会被触发。我查看事件侦听器,或尝试将读取数据通过管道传输到写入流,但没有任何反应。
我认为我的问题是我没有正确实例化我的异步函数。
我知道的一些事情确实有效:我知道 BoxClient 工作正常。我可以联系 Box SDK 并提取元数据。我还可以将 zip 文件上传到盒子。上传发生在此问题中未包含的单独函数中。
我曾尝试拉取下载 URL,然后使用 async-request 拉取数据。我从来没有从请求中得到任何下载数据。与我尝试使用 box 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);
我希望我应该从读取流中获取数据。
解决方案
问题是测试在数据流可以解决之前就解决了。为了解决这个问题,并在检索数据后获得管道的能力,我承诺了整个函数,以便测试等待承诺完成。
推荐阅读
- python - 如果在 for 循环中 Python 超时
- python - 未调用 XGBoost fit() 自定义 eval_metric。为什么?
- google-chrome - Google Chrome 版本 83.0.4103.97 无法在 Windows 10 上访问/打开相机
- c# - 如何在可观察的反应式扩展中记住以前的有效负载?
- jpa - 无状态 EJB 如何回滚 JPA 事务
- django - 执行 makemigrations 时迁移文件中的冲突
- android - Firestore 文档在离线持久性中读取序列/年表
- reactjs - 我怎么能在我的前面显示一个后面的请求?
- python - “连接”对象没有属性“扁平化”
- python - 使用python-vlc [WinError 126] 找不到指定的模块