【发布时间】: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