使用节点 js 和 azure-devops-node-api 下载 Azure DevOps 工作项附件

Download Azure DevOps work item attachments using node js and azure-devops-node-api

尝试下载工作项 (Azure DevOps) 的附件时卡住了。

我正在使用 node.js 'azure-devops-node-api' 客户端 (https://www.npmjs.com/package/azure-devops-node-api) 与 ADO API 交互。我使用 WorkItemTracking 客户端(机智)获得了某个 workItem:

let workItem = await witApi.getWorkItem(1234, undefined, undefined, WorkItemExpand.All);

let attachment = await witApi.getAttachmentContent(attachmentId, fileName, projectId, true);

文档指出 getAttachmentContent 方法下载附件 (https://github.com/microsoft/azure-devops-node-api/blob/ff820b2dd0c9a09cf09e64e94d3f95818a77249d/api/WorkItemTrackingApi.ts#L392),作为 return 值我正在获取一个 ReadableStream,我尝试使用标准 fs 模块将其写入文件:

fs.writeFile('WordDoc.docx', attachment, function (err) {if (err) return console.log(err);});

文件已创建但为空。在调试时我还看到附件变量的类型为 ReadableStream 但内部有很多属性和值,其中有一个缓冲区我实际上想提取并传递给 fs.writeFile 但无法到达它们

我做错了什么?

我相信你应该使用WritableStream来写。由于 getAttachmentContent 返回 ReadableStream。下面是伪代码。可能有用

let readableStream = await witApi.getAttachmentContent(attachmentId, fileName, projectId, true);
let writableStream = fs.createWriteStream('./WordDoc.docx');
readableStream.pipe(writableStream);