将存储与Google Cloud Functions for Firebase结合使用

时间:2018-10-21 00:14:24

标签: firebase google-cloud-storage google-cloud-functions firebase-admin

我看到了很多有关将存储与云功能一起使用的有争议的文档。我真的不明白我应该使用哪个文档。无论如何,我认为我已经尝试了所有这些,但没有任何效果。请帮我。 例如:我正在尝试使用以下文档:https://firebase.google.com/docs/storage/admin/start

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const database = admin.database();

var bucket = admin.storage().bucket("my-custom-bucket");

我有错误

  

未处理的错误TypeError:storage.bucket不是函数

如果我看到以下文档:https://firebase.google.com/docs/storage/extend-with-functions

那是什么?

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const database = admin.database();
const gcs = require('@google-cloud/storage')(); //!!! - is it mistype?
const spawn = require('child-process-promise').spawn;
const path = require('path');
const os = require('os');
const fs = require('fs');

const bucket = gcs.bucket('fileBucket');
  

TypeError:require(...)不是函数

但是无论如何,即使输入错误也将是下一个错误:

  

TypeError:gcs.bucket不是函数

是的,我确实安装了:

npm install --save child-process-promise
npm install --save @google-cloud/storage

有人知道如何使用它吗?还是正确的文档在哪里?

1 个答案:

答案 0 :(得分:3)

这可能与云功能无关。

首先,您应该知道Firebase Admin SDK仅包装了Cloud Storage SDK。最终,它将公开所有相同的对象和API。

第二,知道适用于节点的Cloud Storage SDK版本2.0.0在使用其API的方式上引入了一些重大突破。将old way与导入库的new way进行比较。

Admin SDK(以及您正在查看的文档)都是使用1.7.0的旧方法构建的。如果您手动将Cloud Storage更新到2.0.0,则由于此更改,Admin SDK可能会崩溃,因为从Cloud Storage SDK导出的主要对象是不同的。

您应该在不更新Cloud Storage依赖项的情况下使用Admin SDK,或者跳过Admin SDK并直接使用Cloud Storage SDK。