【问题标题】:Consuming BigQuery API Client through middleware and locating secrets.json files通过中间件使用 BigQuery API 客户端并定位 secrets.json 文件
【发布时间】:2022-01-26 12:37:48
【问题描述】:

我想使用一个秘密文件夹来存储我的 bigquery api 客户端秘密 json 并使用 BigQuery client library 为节点查询数据库。但是在documentations 中,它显示了从 json 文件而不是直接加载凭据的方法。

我正在使用 typescript 查询表并追加行,在 NEXT js 中,我对如何访问不会暴露给客户端并保留在我的中间件中的秘密文件夹的路径有点困惑。

这是相同的功能:

import type { NextApiHandler } from 'next';
import axios from 'axios';
import { BigQuery } from '@google-cloud/bigquery';
import bqSecrets from '../../../bigquery/keys.json';
const options = {
  keyFilename: '../../../secrets/keys.json',
  projectId: 'XXXXXXXXXXXXXXXXXXXXXX',
};

const bigquery = new BigQuery(options);

const submitUserData: NextApiHandler = async (request, response) => {
  const { geoData, googleData, post, userRole } = request.body;
  if (!post) response.json({ error: false, msg: 'Not Required' });
  else {
    delete googleData.isAuthenticated;

    

    try {
      const rep = await bigquery
        .dataset('stackconnect')
        .table('googleoAuth')
        .insert([requestPayload]);
      console.log(await rep);
      response.json({ error: false, msg: 'Success' });
    } catch (e) {
      console.log('Error = ', e);
      response.json({ error: true, msg: 'Error' });
    }
  }
};

但这会引发错误:File not Found。有人可以帮我确定如何在 NEXT 中找到文件,或者如何使用 BQ 节点客户端直接传递 JSON 数据?

另外,我想知道在 NEXT 中,哪个是存储不暴露给客户端的秘密的理想位置?

【问题讨论】:

    标签: javascript google-bigquery next.js


    【解决方案1】:

    在深入研究源码后,我发现有一个属性叫做credentials,所以我通过以下修改使它能够工作:

    import bqSecrets from '../../../bigquery/keys.json';
    const options = {
      credentials: bqSecrets,
      projectId: 'project_id',
    };
    
    const bigquery = new BigQuery(options);
    

    我希望这对希望将 json 凭据直接注入 BigQuery 节点客户端的任何人有所帮助。

    此外,我仍然不太确定 NEXT 的文件结构,因为我仍然不知道除了放在 public 文件夹下的其他资产是否暴露给客户端。

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2022-01-27
      • 2010-10-26
      相关资源
      最近更新 更多