繁体   English   中英

Firebase 存储与 Google 操作

[英]Firebase Storage with Google Actions

我在将 firebase 存储与我的谷歌操作连接时遇到了一些问题。 我需要能够“下载”内部的 json 文件,以便能够读取并挑选出用户在调用操作时提供的数据可能需要什么。

下面是我目前拥有的代码,来自我发现的不同 API 和其他 stackoverflow 问题。

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const Firestore = require('@google-cloud/firestore');
const firestore = new Firestore();

var storage = require('@google-cloud/storage');
const gcs = storage({projectId: 'aur-healthcare-group'});
const bucket = gcs.bucket('gs://aur-healthcare-group');


admin.storage().bucket().file('aur-healthcare-group/aur_members.json').download(function(errr, contents){
  if(!err){
    var jsObjext = JSON.parse(contents.toString('utf8'));
  }
});

我收到的当前错误是"code":3,"message":"Function failed on loading user code。这可能是由于用户代码中的错误。错误消息:错误:请检查您的 function 日志以查看错误原因。当我检查日志时,我只会再次收到上述消息。

我相信我没有正确访问我的 firebase 存储,并且很难找到有关如何正确访问它的好资源。 有人能给我一个如何正确访问存储的例子,以便我能够将它应用到我的项目中吗?

由于您在 Firebase 函数中运行,因此您不需要直接要求@google-cloud/storage依赖项。 相反,您可以通过admin.storage()获取经过正确身份验证的存储组件

之后,您不应将文件下载到 function,因为您最好通过 readStream 直接读取readStream

关于您现有的代码错误,可能是因为您在回调变量为errr时检查if (!err)

我过去做过这个,这是我如何实现它的代码片段。 它是专门用 Typescript 编写的,但我认为如果你直接使用它应该可以将它移植到 JS。

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin'
import { Bucket } from '@google-cloud/storage';

admin.initializeApp()

const db = admin.firestore()

const bucket = admin.storage().bucket('project-id.appspot.com') // Use your project-id here.

const readFile = async (bucket: Bucket, fileName: string) => {
  const stream = bucket.file(fileName).createReadStream();
  return new Promise((resolve, reject) => {
    let buffer = '';
    stream.on('data', function(d: string) {
      buffer += d;
    }).on('end', function() {
      resolve(buffer)
    });
  })
}

app.handle('my-intent-handler', async (conv) => {
  const contents = await readArticle(bucket, 'filename.txt')
  conv.add(`Your content is ${contents}`)
})

exports.fulfillment = functions.https.onRequest(app)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM