Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从@google cloud/storage读取文件?_Javascript_Node.js_Google Cloud Storage - Fatal编程技术网

Javascript 如何从@google cloud/storage读取文件?

Javascript 如何从@google cloud/storage读取文件?,javascript,node.js,google-cloud-storage,Javascript,Node.js,Google Cloud Storage,我正在从我的桶中检索一个文件 我得到了这个文件,并想阅读它的内容,但我不想下载到我的本地项目 我只想读取内容,获取数据并用它进行其他操作 我的代码: export const fileManager = async () => { try { const source = 'upload/'; const options = { prefix: source, delimiter: '/' }; const remoteFile = st.bucket(bN

我正在从我的桶中检索一个文件

我得到了这个文件,并想阅读它的内容,但我不想下载到我的本地项目 我只想读取内容,获取数据并用它进行其他操作

我的代码:

export const fileManager = async () => {
  try {
    const source = 'upload/';

    const options = { prefix: source, delimiter: '/' };

    const remoteFile = st.bucket(bName).file('myData.csv');

    const readFileData;

    remoteFile
      .createReadStream()
      .on('error', err => {
        console.log('error');
      })
      .on('response', response => {
        readFileData = response;
        console.log('success');
        // Server connected and responded with the specified status and headers.
      })
      .on('end', () => {
        console.log('end');
        // The file is fully downloaded.
      });

console.log("data", readFileData)

  } catch (error) {
    console.log('Error Is', error);
  }
};
readFileData未定义

这可能吗?我找到的每个示例都会帮助我下载文件。

createReadStream是异步的,会立即返回。您必须使用回调来确定下载到内存的过程何时完成。现在,您的代码总是打印未定义的数据,因为它试图在响应可用之前打印响应

createReadStream无疑是正确的方法,但您必须理解才能正确处理结果。在链接的文档中有一整节,这就是您在这里要做的。处理流的方式并不是云存储特有的——所有节点流都是一样的

以下关于读取节点流的问题的答案可能会对您有所帮助:


你的拼图纯粹是逻辑输入错误。。。在您的代码中,您已经将readFileData定义为const,然后稍后尝试分配给它。这应该失败。将变量更改为非常量,然后重试。回答得很好!只是为了重新连接到您所说的异步。我也尝试过使用wait来等待过程完成,但我从来没有进入过success、error或end,我尝试过下载方法,然后我得到了数据,但这不是我想要的方式。它是异步的,但它不会返回承诺,所以你不能等待它,你也不能然后或抓住它。需要使用回调来确定进度、完成情况和错误情况。我在阅读您链接的文章时,没有找到您链接的答案,因此我对上一次评论进行了深入研究。我添加了一个新的回调函数来监听数据,在那里我得到了缓冲区。我的readFileData仍然未定义,当记录它时,我可以清楚地看到它未定义,因为console.logreadFileData发生在上述过程完成之前。我怀疑答案就在这些联系的某个地方。非常感谢您,如果您有时间,请给我最后一个问题指点一下。