EOF

时间:2019-05-02 12:57:26

标签: node.js stream loopbackjs google-api-nodejs-client through2

我正在尝试为loopback-component-storage创建一个Google驱动器提供程序。环回提供程序上载方法应返回可写流,但是google drive api希望上载可读的流。

只有可读流可以通过管道传输到可写流,但反之则不行。

我尝试过用ough2,它应该只代理所有数据,但是它的行为就像schroedingers流一样:有时候它起作用,有时候,当我看着它时,通过监听事件它却不能起作用。如果失败,则会抛出steam.push() after EOF

const {google} = require('googleapis');
const through = require('through2');
...
const drive = google.drive({
  version: 'v3'
});
...
upload(options) {
  const containerName = options.container;
  const fileName = options.remote;

  const proxyStream = through();

  this.findContainerByName(containerName, (err, container) => {
    const media = {
      body: proxyStream,
      mimeType: options.contentType,
    };

    const fileMetaData = {
      name: fileName,
      parents: [container.id],
    };

    drive.files.create({
      resource: fileMetaData,
      media,
    });
  });

  return proxyStream;
}

这似乎是由异步findContainerByName函数引起的计时问题。由于回送api的工作原理,我需要向驱动器api索要按名称指定的容器ID。我缓存了响应,但第一次也必须运行。

我可以以某种方式延迟流响应的返回,还是需要两个流才能缓冲可写流,直到可读流准备就绪?

0 个答案:

没有答案