Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 使用Node.js的Google云存储更改通知_Javascript_Node.js_Firebase_Google Cloud Storage_Firebase Storage - Fatal编程技术网

Javascript 使用Node.js的Google云存储更改通知

Javascript 使用Node.js的Google云存储更改通知,javascript,node.js,firebase,google-cloud-storage,firebase-storage,Javascript,Node.js,Firebase,Google Cloud Storage,Firebase Storage,我有Firebase存储桶,我想使用Node.js Google cloud notification API来监听存储中的更改 到目前为止,我所拥有的: const gcloud = require('google-cloud'); const storage = gcloud.storage({ projectId: 'projectId', credentials: serviceAccount }); const storageBucket = storage.bucke

我有Firebase存储桶,我想使用Node.js Google cloud notification API来监听存储中的更改

到目前为止,我所拥有的:

const gcloud = require('google-cloud');

const storage = gcloud.storage({
  projectId: 'projectId',
  credentials: serviceAccount
});  

const storageBucket = storage.bucket('bucketId');
现在,据我所知,我必须创建一个通道,以便监听存储更改

因此,我:

const storageBucketNotificationChannel = storage.channel('channelId', 'resourceId');
这是文档不再清晰的阈值,因为我不知道resourceId代表什么channelId

我也不知道如何声明监听频道更改本身。是否有任何生命周期类型的方法可以这样做

我可以做类似的事情吗

storageBucketNotificationChannel.onMessage(message => { ... })
根据现有的和来自的反馈,节点客户端目前无法创建通道或订阅对象更改通知

其中一个原因是,使用客户端的计算机不一定是运行应用程序的计算机,因此存在安全风险。但是,仍然可以订阅给定bucket的对象更改通知,并让通知接收Node.js GAE应用程序

使用对象:watchAll JSON API 使用
gsutil
订阅时,将gsutil发送到
https://www.googleapis.com/storage/v1/b/bucket/o/watch
其中
bucket
是要监视的bucket的名称。这本质上是一个包装器。一旦所需的应用程序/端点按照中所述获得授权,就可以向所述API发送适当的POST请求,并在
地址中提供所需的端点URL。例如,
地址
可以是
https://my-node-app.example.com/change


然后,Node/Express应用程序服务需要监听对路径
/change
的POST请求。然后,应用程序将相应地对该数据采取行动。注意,应用程序应响应中所述的请求,以便云存储在失败时重试,或在成功时停止重试。

大多数用户使用该命令设置通知通道。你需要按程序做吗?是的,我需要。原因是我需要一个图像处理服务器。我想利用Firebase的强大功能,让Firebase“代理”服务器(隐藏在Firebase后面)。因此,我希望服务器能够监听存储更改,并在child_添加的图像上分别临时处理这些图像。孩子变了。我确实通过在Firebase实时数据库上解决问题找到了一个解决方案,因为Firebase admin Node.js SDK使设置我提到的查询变得非常简单。但是,由于这不是问题的直接答案,所以我将不讨论这个问题,您可能真的想尝试一下googlecloud函数(),这将大大简化这一过程。有关如何处理Firebase存储上传和处理映像的示例,请参阅。我还强烈建议查看Google云功能,因为它可能满足您的要求,并且基本上在Node/NPM上运行。gcloud节点SDK中的通道文档确实很薄。我将看看我能做些什么来测试这一点,并可能运行一个示例。我将向我们的文档团队提出。我已提交文档,要求在参考中添加一个示例。如果这对您很重要,请随时支持此提交。同时,我必须自己获得一个有效的SSL证书来测试这一点,因为对于接收端点。有人有这样的例子吗?我正在尝试调试firebase云函数,并希望在节点中本地复制
require('firebase-functions').storage.onChange
事件。这似乎是正确的轨道。您是否有任何具体错误?你试过什么?根据内容的不同,这可能值得提出自己的问题。