所以我试图返回一个对象数组。我想列出所有的对象在谷歌云存储使用云函数内的特定桶。下面是我到目前为止。它返回和未处理的promise。
export const getAlbums = functions.https.onCall(() => {
return new Promise(async (resolve, reject) => {
//const bucket = admin.storage().bucket('kais-e4ba9.appspot.com')
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
const bucket = storage.bucket("bucketName");
resolve(bucket)
}).catch(err => {
console.log(err.message);
});
});
我写了一个类似的函数,它返回来自Firebase fi恢复的文档数组。
export const getGenres = functions.https.onCall(() => {
//if (!context.auth) return {status: 'error', code: 401, message: 'Not signed in'}
return new Promise((resolve, reject) => {
const array = [{}];
const ref = admin.firestore().collection("genres");
// filter out inaActive genres
const query = ref.where("isActive", "==", true);
query.onSnapshot(querySnapshot => {
// Add genres into an array
const genres = querySnapshot.docs.map(documentSnapshot => {
return {
...documentSnapshot.data(),
key: documentSnapshot.id // required for FlatList
};
});
array.push(genres);
resolve(array);
});
});
});
这是登录到控制台时返回的内容。我想在调用cloud函数列出bucket中的对象时显示相同的结果。
https://firebasestorage.googleapis.com/v0/b/kais-e4ba9.appspot.com/o/Screen拍摄时间:2020-01-07,晚上7:22.27。巴布亚新几内亚?alt=媒体
使用GCP的云函数和节点。JS您可以使用getFiles()方法从云存储桶中检索文件到列表中,然后遍历它们,如图所示:
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
/**
* TODO(developer): Uncomment the following line before running the sample.
*/
// const bucketName = 'Name of a bucket, e.g. my-bucket';
// Lists files in the bucket
const [files] = await storage.bucket(bucketName).getFiles();
console.log('Files:');
files.forEach(file => {
console.log(file.name);
});
您会希望使用云存储列表应用编程接口来列出存储桶中的文件。它与火力恢复100%无关。
以下是从链接的留档中提取的代码:
const [files] = await storage.bucket(bucketName).getFiles();
console.log('Files:');
files.forEach(file => {
console.log(file.name);
});
将其添加到函数中很简单。你从“新promise”开始的方式并不是最好的方式。我们将使用async/await语法,使示例更易于复制:
export const getAlbums = functions.https.onCall(async () => {
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
const [files] = await storage.bucket(bucketName).getFiles();
console.log('Files:', files);
return files.map(file => file.name)
});
如果您只想要项目的默认bucket,那么可以完全不使用bucketName
参数。
这可能是API的问题吗?
如何在bucket下的所有文件在默认情况下仍然是公共可读的情况下禁用它? 我们以前使用
我有一个具有统一访问控制的Google云存储桶,我在权限中添加了“诱惑者”。它说该对象是公共的,但当我尝试打开链接时,仍会收到此消息:“匿名调用方没有storage.objects.get access to the Google Cloud storage object”错误代码为“401”。我希望任何用户都能够访问该链接。我该怎么做?提前谢谢! 向你问好本
我建立Android应用程序链接到谷歌云存储。我想允许访问GCS到我的Android应用程序只。 谷歌提供三种安全连接地面军事系统的解决方案: Oauth 2.0(谷歌账户也是如此) 资料来源:https://developers.google.com/storage/docs/authentication?hl=FR 是否有其他通过地面军事系统安全连接的解决方案?我希望通过这种方式在地面军事系统
我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。
尝试从web执行云函数终结点时,我收到以下错误: 我遵循了这个教程:https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/functions/helloworld/main.py 按此处所述调用函数时:https://cloud.google.com/functions/docs/writing/http,我收