我无法从我的 node.js firebase 函数 index.js 文件中验证大查询

Posted

技术标签:

【中文标题】我无法从我的 node.js firebase 函数 index.js 文件中验证大查询【英文标题】:Im failing to authenticate Big query from my node.js firebase functions index.js file 【发布时间】:2021-07-21 09:01:31 【问题描述】:

我在我的 firebase 函数 index.js 文件中使用大查询 API,但在初始化大查询实例时我不断收到内部服务器错误,我的第一次尝试是在函数目录中包含我的服务帐户密钥文件和我的代码在下面

const functions = require("firebase-functions");
const express = require('express');
const cors = require('cors')( origin: true );

const app = express();
app.use(cors);
app.use(express.json());



exports.api = functions.https.onRequest(app);


app.post('/create_table', (req, res) => 

  'use strict';

  const  BigQuery  = require('@google-cloud/bigquery');
  const options = 
    keyFilename: 'gamelot-c057c-837d4660ae39.json',
    projectId: 'gamelot-c057c',
  ;
  const bigquery = new BigQuery(options);

这是导致错误的行

const  BigQuery  = require('@google-cloud/bigquery');
      const options = 
        keyFilename: 'gamelot-c057c-837d4660ae39.json',
        projectId: 'gamelot-c057c',
      ;
      const bigquery = new BigQuery(options);

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

如果您使用 Cloud Functions for Firebase(即通过 Firebase CLI 部署的 Cloud Functions),则在创建 BigQuery 客户端时不应传递任何选项。只需执行以下操作:

const  BigQuery  = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

事实上,Cloud Functions for Firebase 使用 App Engine 默认服务帐户,即project-id@appspot.gserviceaccount.com,它有一个编辑器role,默认情况下,它包含与 BigQuery 交互的权限。

您可以检查here 编辑“基本”角色是否具有所需的权限。

【讨论】:

我将 App Engine 默认服务帐户的角色更改为所有者,但我仍然收到错误 您不必更改服务帐户的角色。您应该首先检查服务帐户是否具有请求的 bigquery 权限,例如bigquery.datasets.get.

以上是关于我无法从我的 node.js firebase 函数 index.js 文件中验证大查询的主要内容,如果未能解决你的问题,请参考以下文章

无法从我的 VS Code 扩展 (node.js) 连接到 SQL Server

Firebase 函数不返回数据

TypeError: Buffer.alloc 在访问 firebase 工具时不是函数

如何将数据从我的数据库 (Firebase Firestore) 发送到我的 React Native 应用程序?

我无法从我的颤振项目中访问我的 firebase/firecloud 数据。我得到:无法访问 Cloud Firestore 后端。连接失败 1 次

无法使用 Firebase 管理员在 Node.js 的 Google 存储对象上设置元数据